Czy istnieje sposób na dodanie niestandardowych atrybutów do productFlavor lub buildType w dodatku dla Androida dla gradle? Chciałbym mieć taką dodatkową elastyczność w konfiguracji buildVariants, aby móc sprawdzić moją właściwość niestandardową podczas określania zadań dla buildVariants.Gradle Android Plugin - dodaj niestandardowy atrybut smaku?
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
}
}
więc tutaj można zobaczyć Dodałem niestandardowy atrybut "useWidevineAppDrmLib" budowania smak. Byłoby miło zobaczyć ten sam atrybut w buildVariant.mergedFlavor, tak, że mogę sprawdzić, czy wartość atrybutu i budują dodatkowe zadania, takie jak pakiet dodatkowy pliki .so kiedy atrybut jest ustawiony na true:
android.applicationVariants.each { variant -> if(variant.mergedFlavor.useWidevineAppDrmLib) { ... // add copy .so task } }
Może istnieje sposób, aby to zrobić już teraz, ale nie dowiedziałem się jeszcze ... sprawdza nazwę wariantu kompilacji podłańcucha (nazwa smaku) działa dla mnie, ale wygląda na brudny.
Idealnie chciałbym mieć mapę niestandardowych atrybutów różnych typów dla buildType i productFlavor.
Xav, wielkie dzięki za szybką odpowiedź! – blackdigger
udało mi się zrobić to w następujący sposób: define klasy rozszerzenie powyższej sekcji „Android” - w przeciwnym razie daje błąd kompilacji: klasa BooleanExtension { wartość logiczna BooleanExtension (wartość logiczna) { \t this.value = wartość } publicznego void setValue (wartość logiczna) { \t this.value = wartość } publicznej Boolean getValue() { \t wartość zwracana } } następnie napisać: widevineAppDrm { ... useWidevineAppDrmLib.v alue true ... } .... and: if (variant.productFlavors.get (0) .useWidevineAppDrmLib.value) {...} – blackdigger
i jeszcze jedno, aby dodać rozszerzenie smaku musiałem zrobić: productFlavors.whenObjectAdded {smak -> flavor.extensions.create ("useWidevineAppDrmLib" BooleanExtension, false) } – blackdigger