C'è un modo per aggiungere attributi personalizzati a productFlavor o buildType nel plugin Android per gradle? Mi piacerebbe avere una maggiore flessibilità nella configurazione di buildVariants, in modo da poter controllare la mia proprietà personalizzata quando si specificano le attività per buildVariants.Gradle Android Plugin - aggiungi un attributo di sapore personalizzato?
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
}
}
ecco potete vedere ho aggiunto attributo personalizzato "useWidevineAppDrmLib" per costruire sapore. Sarebbe bello vedere lo stesso attributo in buildVariant.mergedFlavor, in modo che possa verificare che il valore dell'attributo e non costruire ulteriori compiti, come pacchetto aggiuntivo file .so quando l'attributo è impostato su true:
android.applicationVariants.each { variant -> if(variant.mergedFlavor.useWidevineAppDrmLib) { ... // add copy .so task } }
forse c'è già un modo per farlo ma non ho ancora trovato ... controllare il nome della variante di compilazione per sottostringa (nome di sapore) funziona per me, ma sembra sporco.
Idealmente mi piacerebbe avere una mappa di attributi personalizzati di diversi tipi per buildType e productFlavor.
Xav, grazie mille per una rapida risposta! – blackdigger
sono riuscito a farlo nel modo seguente: definire la classe dell'estensione sezione "Android" di cui sopra - in caso contrario dà errore di compilazione: class BooleanExtension { valore booleano BooleanExtension (valore booleano) { \t this.value = valore } pubblico setValue void (valore booleano) { \t this.value = valore } pubblico booleano getValue() { \t valore di ritorno }} quindi scrivere: widevineAppDrm { ... useWidevineAppDrmLib.v alue true ... } .... e: if (variant.productFlavors.get (0) .useWidevineAppDrmLib.value) {...} – blackdigger
e una cosa di più, per aggiungere l'estensione sapore che dovevo fare: productFlavors.whenObjectAdded {sapore -> flavor.extensions.create ("useWidevineAppDrmLib", BooleanExtension, false) } – blackdigger