2020年7月14日火曜日

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

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

app/build.gradle
  1. android {  
  2.     ...  
  3.     buildTypes {  
  4.         minify {  
  5.             initWith debug  
  6.             minifyEnabled true  
  7.             proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"  
  8.         }  
  9.         release {  
  10.             minifyEnabled true  
  11.             proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"  
  12.   
  13.             ...  
  14.         }  
  15.     }  
  16.   
  17.     ...  
  18.   
  19.     testBuildType "minify"  
  20. }  
  21.   
  22. dependencies {  
  23.     implementation project(":api")  
  24.   
  25.     ...  
  26. }  
依存している api モジュールに debug と release しか無い場合、このままだと Build Variants に minify を選んだときに gradle sync に失敗します。なぜなら api モジュールでは minify がないので debug と release のどちらを使えばいいかわからないからです。

api/build.gradle
  1. android {  
  2.     ...  
  3.   
  4.     buildTypes {  
  5.         release {  
  6.             minifyEnabled false  
  7.             proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"  
  8.         }  
  9.     }  
  10. }  
  11. ...  


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

app/build.gradle
  1. android {  
  2.     ...  
  3.     buildTypes {  
  4.         minify {  
  5.             initWith debug  
  6.             minifyEnabled true  
  7.             proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"  
  8.   
  9.             matchingFallbacks = ['debug'// これを追加  
  10.         }  
  11.         release {  
  12.             minifyEnabled true  
  13.             proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"  
  14.   
  15.             ...  
  16.         }  
  17.     }  
  18.   
  19.     ...  
  20.   
  21.     testBuildType "minify"  
  22. }  
  23. ...  


参考

0 件のコメント:

コメントを投稿