Cambiar dinámicamente la clave de manifiesto de depuración / liberación para cada sabor

Estoy usando un servicio donde es necesario configurar la clave del API en AndroidManifest como esto:

  <meta-data android:name="service_api_key" android:value="@string/my_api_key" /> 

El problema con esto es que tengo un par de sabores de mi aplicación y necesito configurar diferentes claves API para cada sabor. Cada sabor necesita tener una clave de API diferente para depurar y liberar:

 flavor1 - debug key: key1 - release key: key2 flavor2 - debug key: key3 - release key: key4 flavor3 - debug key: key5 - release key: key6 

¿Cuál sería la forma recomendada de lograr esto?

3 Solutions collect form web for “Cambiar dinámicamente la clave de manifiesto de depuración / liberación para cada sabor”

¿Cuál sería la forma recomendada de lograr esto?

Paso # 1: Crear fuentes para cada variante de construcción ( src/flavor1Debug/ , src/flavor1Release/ , etc.) para las que necesita una clave de API diferente a la que tenga en src/main/ .

Paso # 2: En cada conjunto de fuentes, tenga un archivo res/values/strings.xml que contenga el valor de la variante de my_api_key para my_api_key .

Paso # 3: Cerveza.

No probado pero me imagino que podría intentar algo como esto …

 applicationVariants.all {variants -> variant.productFlavors.all { flavor -> flavorChoosed = " ${flavor.name}" } } release { switch(flavorChoosed){ case "flavor1": resValue "string", "flavorId", apiKeyRealeseFlavor1 break ..... } } debug{ switch(flavorChoosed){ case "flavor1": resValue "string", "flavorId", apiKeyDebugFlavor1 break ..... } } <meta-data android:name="service_api_key" android:value="${flavorId}" /> 

Para cada sabor del producto que haya agregado a su archivo gradle , debe agregar un archivo de recursos string.xml para los valores.

Al cambiar su variante de construcción, Android Studio será lo suficientemente inteligente para agarrar el valor correspondiente para su construcción.

Si no especifica uno, entonces el valor predeterminado es el principal.

EDITAR:

Introduzca aquí la descripción de la imagen

A continuación, para el conjunto de origen, seleccione la versión de lanzamiento o de depuración de su productFlavor:

Introduzca aquí la descripción de la imagen

  • Gradle se queda atascado en 'build' o 'assembleDebug' al usar la versión de 64 bits o 32 bits de Android Studio
  • ¿Hay alguna manera de ejecutar un conjunto específico de pruebas en un proyecto de Android Gradle?
  • Qué comprometer en VCS desde un proyecto de Gradle en Android Studio
  • Valor predeterminado para Gradle buildConfigField booleano utilizado en todos los sabores
  • Problema al auto-incrementar versionCode con Gradle
  • Gradle de Android, libs nativas para diferentes arquitecturas
  • Dependencias no agregadas al archivo POM - Android Gradle Maven Publishing
  • Capacidad para resolver dependencias de módulos dinámicamente basadas en la versión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.