公式ドキュメントも充実してもう書くことはないんじゃないかってぐらいだけど
理解しきれていない部分があるのでAndroid Gradle Plugin 3.0でやったことをメモ。
1. gradle-wrapper.propertiesの更新
distributionUrl=
https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip
2. build.gradleの修正
-- compile 'com.hogehoge.age:hoge:1.0.0'
++ implementation 'com.hogehoge.age:hoge:1.0.0'
configurationは不要
-- degubCompile project(path':hogelib', configuration: 'debug')
++ debugImplementation project(':hogelib')
appが依存しているモジュールはappのBuildVariantを引き継ぐから上記でいけるという理解。
以前はconfigurationでbuildTypeを指定するところを意識することなく設定できる。
flavorが設定されていたら
下記のように書ける
flavor1Implementation project(':hogelib')
依存モジュールを取り除く
flavor1Implementation (project('hogelib')) {
exclude group:'com.xxx.xxx' module:'hoge'
}
3. google()の追加とgradleの更新
buildscript {
repositories {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
4. ProductFlavor時の設定
productFlavorsが設定されている場合、flavorDimensions
を設定する必要がある。
- app側
flavorDimensions "environment"
productFlavors {
flavor1 {
dimension "environment"
}
flavor2 {
dimension "environment"
}
}
- 依存モジュール側
flavorDimensions "environment"
productFlavors {
flavor1 {
dimension "environment"
}
flavor2 {
dimension "environment"
}
flavor3 {
dimension "environment"
}
}
アプリ側にのみ存在するBuildTypeがある場合
これはアプリと依存モジュールに同じflavorDimensionsが存在する場合
でもflavorはお互い設定が違うよって時に使用します。
- app側
android {
~ ~ ~ ~
productFlavors {
flavor1 {
matchingFallbacks = ['flavor3', 'flavor4']
}
flavor2 {}
}
}
- 依存モジュール側
android {
~ ~ ~ ~
productFlavors {
flavor3 {}
flavor4 {}
}
}
依存モジュール側にのみ存在するflavorDimensionsがある場合
依存ライブラリのflavorDimensions名、再優先の依存ライブラリのflavor名、次に優先するflavor名を指定する。
- app側
android {
defaultConfig{
missingDimensionStrategy [flavorDimensions名], [flavor1], [flavor2]
}
}