LoginSignup
0
3

More than 5 years have passed since last update.

Android Gradle Plugin 3.0移行でやったこと

Posted at

公式ドキュメントも充実してもう書くことはないんじゃないかってぐらいだけど
理解しきれていない部分があるので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]
    }
}
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3