@ Eloy_007,
Bien que votre question est semblable à this one, il y a quelques nuances dans votre question que je pense que le suivant répondra.
Tout d'abord, il y a un great article that you should read où l'auteur (Coby Plain) fournit un meilleur cadre pour travailler avec les saveurs. En outre, le android10/Android-CleanArchitecture repo a une structure très agréable pour l'importation des propriétés gradle. Regardez dans buildsystem/dependencies.gradle
et presentation/build.gradle
pour des conseils.
Cela dit, voici un échantillon rapide de ce que les propriétés importation ressemble lorsque vous travaillez avec semi-dynamique/ importés saveurs:
Dans le fichier gradle, nous pouvons référencer un fichier externe qui a tous nos associés propriétés définies ensemble et peut-être utiliser un peu de magie groovy simple à se joindre à cordes etc.
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
}
}
}
}
Puis dans la référence properties.gradle
vous définissez flavors
comme suit:
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,
]
]
}
Au minimum, cela permet de définir vos goûts en dehors de votre fichier build.gradle
afin que vous puissiez minimze la quantité de cochonneries que vous devez passer en revue. De plus, clé majeure, il conserve l'historique des révisions pour le fichier build.gradle
propre.
HTH, bonne chance!
Probablement pas avec cette syntaxe, mais il devrait y avoir un moyen dans la LIS d'appeler une méthode qui ajoute une saveur basée sur une variable. Ou, considérez votre 'build.gradle' comme une sortie de quelque chose d'autre qui génère du code, donc vos variables sont dans votre générateur de code, pas' build.gradle' lui-même. – CommonsWare
@ Eloy_007 pourriez-vous coller ce que vous avez pour un fichier 'build.gradle'? Alors que les noms de saveurs ne sont pas vraiment dynamiques *, le [buildVariant] (https://developer.android.com/studio/build/build-variants.html) peut être construit à partir de plusieurs noms de saveurs. – abest
Ah, je n'ai jamais fini d'utiliser des scripts bash qui remplacent dynamiquement tous ces noms pour moi. Ca craint que le plugin Gradle ne supporte pas cela (au moins pour ce que je pourrais dire) –