公式ドキュメントも充実してもう書くことはないんじゃないかってぐらいだけど
理解しきれていない部分があるので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を指定するところを意識することなく設定できる。

:point_up: flavorが設定されていたら

下記のように書ける

flavor1Implementation project(':hogelib')

:point_up: 依存モジュールを取り除く

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"
        }
    }

:point_right: アプリ側にのみ存在するBuildTypeがある場合

これはアプリと依存モジュールに同じflavorDimensionsが存在する場合
でもflavorはお互い設定が違うよって時に使用します。

  • app側
android {
  ~ ~ ~ ~
    productFlavors {
        flavor1 {
            matchingFallbacks = ['flavor3', 'flavor4']
        }
        flavor2 {}
    }
}
  • 依存モジュール側
android {
  ~ ~ ~ ~
    productFlavors {
        flavor3 {}
        flavor4 {}
    }
}

:point_right: 依存モジュール側にのみ存在するflavorDimensionsがある場合

依存ライブラリのflavorDimensions名、再優先の依存ライブラリのflavor名、次に優先するflavor名を指定する。

  • app側
android {
    defaultConfig{
      missingDimensionStrategy [flavorDimensions名], [flavor1], [flavor2]
    }
}
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.