2020年7月14日火曜日

依存 module に無い buildType がある場合 matchingFallbacks を使う

proguard を有効にしたビルドで debuggable な処理をしたいとき、debug を引き継いで proguard を有効にした buildType (以下の minify) を追加したくなると思います。

app/build.gradle android { ... buildTypes { minify { initWith debug minifyEnabled true proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" } release { minifyEnabled true proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ... } } ... testBuildType "minify" } dependencies { implementation project(":api") ... } 依存している api モジュールに debug と release しか無い場合、このままだと Build Variants に minify を選んだときに gradle sync に失敗します。なぜなら api モジュールでは minify がないので debug と release のどちらを使えばいいかわからないからです。

api/build.gradle android { ... buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" } } } ...

これを解決するには matchingFallbacks を使います。依存モジュールに対応する buildType が無い場合、ここで指定した buildType が使われます。
ここでは debug を指定しているので、app で buildType に minify を選ぶと、api では buildType として debug が選択されます。

app/build.gradle android { ... buildTypes { minify { initWith debug minifyEnabled true proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" matchingFallbacks = ['debug'] // これを追加 } release { minifyEnabled true proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ... } } ... testBuildType "minify" } ...

参考

0 件のコメント:

コメントを投稿