Tengo un proyecto de Android, administrado bajo git. Git tiene 2 twigs (mucho más … pero importantes son esas dos), twig-a & twig-b. ¿Es posible configurar gradle para determinar de qué twig se construyó el proyecto y configurar el public static String
en una de las classs del proyecto para valorar dependiendo de la twig?
Gracias.
Sí, puede tener un file gradle.properties
en sus twigs (puede leer sobre properties aquí ), que contiene alguna propiedad, por ejemplo buildBranchName
. Pero el valor asignado a esta propiedad será diferente en cada brach. Por ejemplo, en brach1 tiene un file gradle.properties en el mismo directory que su script build.gradle y tiene un
buildBranchName=branch1
propiedad adentro. Al mismo time, el file gradle.properties en branch2 contiene:
buildBranchName=branch2
Luego, dado que tiene un proyecto de Android, puede usar una opción de generación de class BuildConfig
para pasar esta variable a sus fonts de aplicación. Puede leer sobre esto aquí , en la sección "Mejora de BuildConfig". Todo lo que necesita es agregar alguna propiedad a esta class autogenerada para sus types de compilation, de la siguiente manera:
android { ... buildTypes { debug { buildConfigField "String", "BUILD_BRANCH", buildBranchName } ... } }
Luego, durante la compilation, se BuildConfig
class final BuildConfig
y tendrá un campo BUILD_BRANCH
, que puede usar como un campo estático simple de esta class.
Además, si algunos tienen un proyecto que no es de Android, hay un complemento , que permite hacer lo mismo para todos los proyectos Java.
Sí, puedes hacer esto agregando los sabores al proyecto
p.ej
android { ...... productFlavors { branch1 { buildConfigField("String", "WHICH_BRANCH", "Branch1") } branch2 { buildConfigField("String", "WHICH_BRANCH", "Branch2") } } ......... }
Ahora para acceder a este valor como este
p.ej
String whichBranch = BuildConfig.WHICH_BRANCH;
Avísame en caso de cualquier problema