gradleのandroidプラグインのproductFlavorまたはbuildTypeにカスタム属性を追加する方法はありますか? buildVariantsの設定にこのような柔軟性を追加したいので、buildVariantsのタスクを指定するときに私のカスタムプロパティをチェックすることができます。ので、ここでGradle Android Plugin - カスタムフレーバ属性を追加しますか?
productFlavors {
flavorGroups "drm", "storeType"
googlePlay {
flavorGroup "storeType"
buildConfig "public static final String TARGET_STORE = \"google\";"
}
samsungApps {
flavorGroup "storeType"
buildConfig "public static final String TARGET_STORE = \"samsung\";"
}
platformDrm {
flavorGroup "drm"
}
widevineAppDrm {
flavorGroup "drm"
minSdkVersion 9
useWidevineAppDrmLib true
}
}
あなたは私が味を構築するためにカスタム属性 "useWidevineAppDrmLib" を追加しました見ることができます。 属性がtrueに設定されている場合、私がその属性の値を確認することができますし、このようなパッケージの追加の.soファイルなどの追加タスクを構築すればよいように、buildVariant.mergedFlavorで同じ属性を参照するとよいでしょう:
android.applicationVariants.each { variant -> if(variant.mergedFlavor.useWidevineAppDrmLib) { ... // add copy .so task } }
多分既にそれを行う方法がありますが、私はまだ見つけられませんでした。 部分文字列(フレーバー名)のビルドバリアント名を確認するのは面倒ですが、汚れています。
理想的には、buildTypeとproductFlavorのさまざまなタイプのカスタム属性のマップが必要です。
Xav、返信いただきありがとうございます! – blackdigger
私はそれを次の方法を行うための管理:「アンドロイド」セクションの上に拡張クラスを定義する - それ以外の場合はエラーをコンパイル与える: クラスBooleanExtension { ブール値を BooleanExtension(ブール値){ \t this.value =値 } 公衆ボイドのsetValue(ブール値){ \t this.value =値 }パブリックブールのgetValue(){ \t戻り値 }次に }書き込み: widevineAppDrm { ... useWidevineAppDrmLib.v alue true ... } ....と if(variant.productFlavors.get(0).useWidevineAppDrmLib.value){...} – blackdigger
ともう一つ、味の拡張子を追加するために私がしなければならなかった: productFlavors.whenObjectAdded {味を - > flavor.extensions.create( "useWidevineAppDrmLib"、BooleanExtension、偽) を} – blackdigger