Gibt es eine Möglichkeit, benutzerdefinierte Attribute zu ProductFlavor oder BuildType in Android-Plugin für Gradle hinzuzufügen? Ich hätte gerne eine solche zusätzliche Flexibilität bei der Konfiguration von BuildVariants, damit ich meine benutzerdefinierte Eigenschaft beim Festlegen von Aufgaben für BuildVariants überprüfen kann.Gradle Android Plugin - benutzerdefinierte Flavor-Attribut hinzufügen?
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
}
}
so hier können Sie sehen, ich benutzerdefinierte Attribute hinzugefügt haben "useWidevineAppDrmLib" Geschmack zu bauen. Es wäre schön, das gleiche Attribut in buildVariant.mergedFlavor, um zu sehen, so dass ich diesen Attributwert überprüfen und bauen zusätzliche Aufgaben, wie zum Beispiel Paket zusätzliche .so-Dateien, wenn das Attribut auf true gesetzt ist:
android.applicationVariants.each { variant -> if(variant.mergedFlavor.useWidevineAppDrmLib) { ... // add copy .so task } }
vielleicht gibt es einen Weg, das schon zu tun, aber ich habe noch nicht herausgefunden ... Überprüfung Build-Variante Name für Teilzeichenfolge (Flavor Name) funktioniert für mich, aber es sieht schmutzig aus.
Idealerweise hätte ich gerne eine Karte von benutzerdefinierten Attributen verschiedener Typen für BuildType und ProductFlavor.
Xav, vielen Dank für die schnelle Antwort! – blackdigger
Ich schaffte es die folgende Art und Weise zu tun: Erweiterungsklasse oben "android" Abschnitt definieren - sonst gibt es kompilieren Fehler: Klasse BooleanExtension { Booleschen Wert BooleanExtension (Boolean value) { \t this.value = Wert } Öffentlichkeit void setValue (Boolean value) { \t this.value = Wert } public Boolean getValue() { \t Rückgabewert } } dann schreiben: widevineAppDrm { ... useWidevineAppDrmLib.v alue true ... } .... und: if (variant.productFlavors.get (0) .useWidevineAppDrmLib.value) {...} – blackdigger
und eine weitere Sache, Geschmackserweiterung hinzufügen ich zu tun hatte: productFlavors.whenObjectAdded {Geschmack -> flavor.extensions.create ("useWidevineAppDrmLib", BooleanExtension, false) } – blackdigger