일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ConstraintLayout
- layout
- LinearLayout
- Anko SQLite
- ReactDOM
- block scope
- component
- view
- Git
- Eclipse
- react
- 안드로이드
- http
- permission
- function scope
- cardview
- android
- java
- Retrofit2
- Kotlin
- ViewGroup
- intent
- linux
- props
- vim
- RecyclerView
- javascript
- Anro Coroutines
- RelativeLayout
- .kt
- Today
- Total
이것저것 다 개발
[Android] Flavor 사용하기 (빌드 변형 구성) 본문
Flavor을 이용한 1개의 소스로 여러가지 버전의 앱 만들기
projectFlavors 를 사용하면
기능은 같지만 이름만 다르게 한 앱, 무료/유료 버전의 앱을 구분, SDK 버전에 따른 앱이라던지
하나의 소스로 여러 버전의 앱을 만들 수 있습니다.
먼저 build.gradle(app) 파일에 flavor 설정이 필요합니다.
productFlavors {} 블록에 원하는 설정을 구성합니다.
defaultConfig 는 ProductFlavor 클래스에 속해 있으므로 모든 defaultConfig {} 블록 안의 기본 구성을 사용할 수 있습니다.
예) productFlavors {} 블록 내부에 versionCode를 명시하지 않아도 defaultConfig {} 블록의 versionCode를 사용함.
build.gradle 설정하기
아래는 free version과 paid version 두 가지 버전의 예시 입니다.
free {} 블록과 paid {} 블록을 만들어 각각의 설정을 추가합니다.
build.gradle(Module: app)
위와 같은 설정을 마치고 나면 Build Variants의 달라진 점을 확인할 수 있습니다.
free version 과 paid version 의 각각의 Debug, Release가 생긴걸 확인할 수 있습니다.
App 빌드 시 선택해서 빌드하면 됩니다.
각각의 속성 설명
flavorDimensions 는 간략하게 설명하자면 빌드의 구분을 나타냅니다.
"api", "mode", "version" 등 api 버전에 따른 구분, 앱의 기능에 따른 구분, version에 따른 구분 등을 나타냅니다.
manifestPlaceholders 는 AndroidManifest.xml 파일에서 ${appLabel} 처럼 사용할 수 있습니다.
applicationIdSuffix 는 defaultConfig에 명시된 applicationId 뒤에 붙게 됩니다.
각각의 version의 ApplicationId 를 구분하게 해줍니다.
buildConfigField는 BuildConfig라는 클래스에서 호출할 수 있는 값입니다.
BuildConfig.##### 으로 사용합니다.
resValue 는 문자열 정의로 @string/##### 와 같이 사용할 수 있습니다.
strings.xml 파일에서 문자열을 정의해서 사용하는 것과 같습니다.
manifestPlaceholders 사용 예시
AndroidManifest.xml
BuildConfig 사용 예시
MainActivity.java
결과물
'Android' 카테고리의 다른 글
[Android] startActivityForResult (0) | 2019.01.10 |
---|---|
[Android] ProgressDialog 사용하기 (0) | 2018.07.13 |
[Android] ConstraintLayout (0) | 2018.06.12 |
[Android] OpenWeatherMap 날씨 API 사용 앱 만들기 (14) | 2018.05.28 |
[Android] Retrofit2 사용해보기 (2) | 2018.05.25 |