android-gradle
제품 맛 내기 구성
수색…
비고
으로 제품의 맛은 동일한 속성을 지원 defaultConfig
defaultConfig 실제로 ProductFlavor 클래스에 속하기 때문이다. 즉, defaultConfig {}
블록에서 모든 특성에 대한 기본 구성을 제공 할 수 있으며 각 특성은 pplicationId
와 같은 이러한 기본값 중 하나를 재정의 할 수 있음을 의미합니다.
build.gradle 파일을 구성하는 방법
android {
...
defaultConfig {...}
buildTypes {...}
productFlavors {
demo {
applicationId "com.example.myapp.demo"
versionName "1.0-demo"
}
full {
applicationId "com.example.myapp.full"
versionName "1.0-full"
}
}
}
build.gradle의 풍미 정수 및 자원
gradle을 사용하여 풍미를 기준으로 BuildConfig
상수 및 res
값을 가질 수 있습니다. 그냥 당신이 지원하고자하는 맛에 값을 추가하십시오.
android {
defaultConfig {
resValue "string", "app_name", "Full App"
buildConfigField "boolean", "isDemo", "false"
}
productFlavors {
demo {
resValue "String", "app_name", "Demo App"
buildConfigField "boolean", "isDemo", "true"
}
full {
// use default values
}
}
}
Gradle이 모든 병합 / 덮어 쓰기를 수행합니다. 생성 된 코드를 통해 값의 출처를 확인할 수도 있습니다.
<!-- Values from default config. -->
<string name="app_name" translatable="false">Default Name</string>
과
public final class BuildConfig {
public static final String VERSION_NAME = "1.0";
// Fields from product flavor: demo
public static final boolean isDemo = true;
}
Flavor 차원 사용
앱이 둘 이상의 기준을 기반으로하는 경우 많은 풍미를 만드는 대신 풍미 치수를 정의 할 수 있습니다.
flavor 차원은 변형 생성에 사용될 데카르트 곱을 정의합니다.
예:
flavorDimensions("dimA", "dimB")
productFlavors {
row1 {
...
dimension = "dimA"
}
row2 {
...
dimension = "dimA"
}
row3 {
...
dimension = "dimA"
}
col1 {
...
dimension = "dimB"
}
col2 {
...
dimension = "dimB"
}
col3 {
...
dimension = "dimB"
}
}
이 설정은 18 (3 3 2) 변형을 생성합니다 (2 개의 표준 빌드 유형이있는 경우 : debug
및 release
). 다음 빌드 변형이 생성됩니다.
row1-col1-debug
row1-col2-debug
row1-col3-debug
row1-col1-release
row1-col2-release
row1-col3-release
row2-col1-debug
row2-col2-debug
row2-col3-debug
row2-col1-release
row2-col2-release
row2-col3-release
row3-col1-debug
row3-col2-debug
row3-col3-debug
row3-col1-release
row3-col2-release
row3-col3-release
차원 의 순서는 android.flavorDimensions
의해 정의되고 flavor가 다른 것을 재정의합니다 . flavor의 값이 우선 순위가 낮은 flavor에 정의 된 값을 대체 할 때 자원에 중요합니다.
flavor 차원은 더 높은 우선 순위로 먼저 정의됩니다. 그래서이 경우에 :
dimA > dimB > defaultConfig
둘 이상의 flavor 차원이 사용될 때 사용할 수있는 "flavor combination"소스 폴더도 있습니다. 예를 들어 src/flavor1Flavor2/
.
- 이는 모든 차원의 모든 조합에 적용됩니다.
- 우선 순위는 단일 소스 소스 셋보다 높지만 빌드 유형보다 낮습니다.
풍미에 대한 의존성 추가
특정 제품 풍미에 대해 서로 다른 종속성을 추가 할 수 있습니다.
<flavorName>Compile 'group:name:xyz'
구문을 사용하십시오.
android {
...
productFlavors {
flavor1 {
//.....
}
flavor2 {
//.....
}
}
}
...
dependencies {
compile 'com.android.support:appcompat-v7:24.2.0'
// Add a dependency only for flavor1
flavor1Compile 'group:name:x.y.z'
// Add a dependency only for flavor2
flavor2Compile 'group:name:x.y.z'
}
제품 맛 내기 개발 및 생산 사례
productFlavors {
// Define separate dev and prod product flavors.
dev {
// dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
// to pre-dex each module and produce an APK that can be tested on
// Android Lollipop without time consuming dex merging processes.
minSdkVersion 21
}
prod {
// The actual minSdkVersion for the application.
minSdkVersion 15
}
}