Establecer la variable estática de Gradle en time de compilation

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