@ Eloy_007,
Während Ihre Frage zu this one ähnlich ist, gibt es einige Nuancen in Frage, die ich folgendes denken beantworten.
Zunächst gibt es eine great article that you should read, wo der Autor (Coby Plain) geht um einen besseren Rahmen für die Arbeit mit Aromen. Außerdem hat die android10/Android-CleanArchitecture repo eine wirklich schöne Struktur zum Importieren von Gradle-Eigenschaften. Suchen Sie in buildsystem/dependencies.gradle
und presentation/build.gradle
nach Anleitung.
Das heißt, hier ist eine kurze Probe, welche Eigenschaften sieht aus wie importieren, wenn sie mit halb dynamic/importiert Aromen arbeiten:
In der gradle-Datei können wir eine externe Datei verweisen, die alle unsere verwandten hat definierten Eigenschaften zusammen und vielleicht einige einfache groovy Magie verwenden, um Strings zu verbinden usw.
build.gradle:
apply from: "properties.gradle" // load in properties from some other file
// ... plugins, etc.
android {
// some other sections
productFlavors {
dev {
// you may want to keep some non-imported flavors.
// maybe you're working with flavor dimension here
}
// ... maybe more standard flavors
flavors.each {name, flavor ->
def wrapEscaped = { s -> "\"${s}\""} // simple function to wrap strings
"$name" {
applicationId flavor.applicationId
versionName "${some_version_number}"
buildConfigField "String", "MAJOR_KEY", wrapEscaped(flavor.majorKey)
buildConfigField "String", "ANOTHER_ONE", wrapEscaped(flavor.anotherOne)
buildConfigField "int", "PILLOW_COUNT", flavor.pillowCount
// ... additional configs
}
}
}
}
Dann in der referenzierten properties.gradle
Sie definieren flavors
wie folgt:
ext {
config = [
baseId : "io.wethebest.mobile"
]
flavors = [
free : [
applicationId: config.baseId + ".free",
majorKey : "COCOA BUTTER",
anotherOne : "ANOTHER ONE",
pillowCount : 1,
]
simple : [
applicationId: config.baseId + ".simple",
majorKey : "A HAMMOCK",
anotherOne : "ANOTHER ONE",
pillowCount : 10,
],
paid : [
applicationId: config.baseId,
majorKey : "A JETSKI",
anotherOne : "ANOTHER ONE",
pillowCount : 100000000,
]
]
}
Zumindest dies ermöglicht Ihnen Ihre Aromen außerhalb Ihrer build.gradle
Datei definieren, so dass Sie die Menge an cruft minimze können Sie zu sichten haben. Plus, Major Key, hält die Revisionshistorie für die build.gradle
Datei sauber.
HTH, viel Glück!
Wahrscheinlich nicht mit dieser Syntax, aber es sollte eine Möglichkeit in der DSL eine Methode aufrufen, die einen Geschmack basierend auf einer Variablen hinzufügt. Oder denken Sie daran, dass Ihre 'build.gradle' von etwas anderem ausgegeben wird, dass Code die Datei generiert, also sind Ihre Variablen in Ihrem Code-Generator, nicht' build.gradle' selbst. – CommonsWare
@ Eloy_007 Würde es Ihnen etwas ausmachen, was Sie für eine 'build.gradle' Datei haben? Während flavourNames nicht wirklich dynamisch * sind, kann die [buildVariant] (https://developer.android.com/studio/build/build-variants.html) aus mehreren Flavor-Namen aufgebaut werden. – abest
Ah vergiss ich am Ende Bash-Skripte, die dynamisch alle diese Namen für mich ersetzen. Es ist irgendwie scheiße, dass Gradle-Plugin das nicht unterstützt (zumindest für das, was ich sagen konnte) –