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のフレーバ定数とリソース
BuildConfig
使用すると、 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ディメンションの使用
アプリが複数の基準に基づいている場合、多くのフレーバーを作成するのではなく、フレーバーディメンションを定義することができます。
フレーバーディメンションは、バリアントを生成するために使用されるデカルト積を定義します。
例:
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
で定義され、 フレーバがもう一方をオーバーライドします 。これは、フレーバの値が優先順位の低いフレーバで定義された値を置き換えるときにリソースにとって重要です。
フレーバーディメンションは、より高い優先順位で最初に定義されます。したがってこの場合:
dimA > dimB > defaultConfig
複数のフレーバーディメンションが使用されている場合は、「フレーバコンビネーション」ソースフォルダも使用できます。たとえば、 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
}
}