¿Cómo usar los tipos de compilación (depuración vs liberación) para establecer diferentes estilos y nombres de aplicaciones?

Fondo

En Android Studio, puede tener diferentes tipos de construcción, cada uno tiene su propia configuración, similar a los productos-sabores (como se muestra aquí )

El problema

Deseo que cada vez que tenga mi aplicación instalada en alguna parte, inmediatamente sabría qué tipo era – lanzar o depurar, sólo por mirarlo.

Para esto, creo que puedo usar el archivo build.gradle:

buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { debuggable true } } 

La cosa es, no sé qué poner allí. Quiero que el nombre de la aplicación sea diferente (y sin embargo tenga la cadena en los archivos de cadenas, ya que se traduce), y quiero configurar el estilo de algo en la aplicación para que sea diferente (por ejemplo, el color de la barra de acción) .

He encontrado que puedo usar "resValue" (encontrado aquí ), pero por alguna razón, no importa lo que hago, no compilará:

  • Si el recurso ya fue declarado (como en el nombre de la aplicación, que se traduce), se dice que el recurso está duplicado
  • Si el recurso no fue declarado, no puedo alcanzarlo vía código / xml.

La pregunta

¿Cómo puedo utilizar diferentes valores de recursos para los tipos de compilación, incluso si ya existen?

¿Cómo puedo utilizar diferentes valores de recursos para los tipos de compilación, incluso si ya existen?

Ya existen en la fuente main . Agregue otros conjuntos de fuentes para sus otros tipos de interés de creación, en los que reemplaza los recursos que desea.

Por ejemplo, en este proyecto de ejemplo , tengo una fuente main y un conjunto de fuentes de debug . Ambos tienen el app_name cadena app_name en res/values/strings.xml , pero con valores diferentes. En una compilación de debug , se utilizará la versión de fuentes de debug del recurso; En cualquier otra compilación (por ejemplo, release ), el conjunto de fuentes de debug se ignora por completo y se utiliza la versión de fuente main del recurso.

Tenga en cuenta que no tengo una fuente de release . Particularmente al sobreescribir recursos, esto está perfectamente bien; sólo necesita un conjunto de fuentes para un tipo de compilación cuando desee cambiar algo para ese tipo de compilación, no para cada tipo de compilación que esté utilizando.

En Archivo | Estructura del proyecto | app | Sabores tenemos:

 Version Name: 1.3 

En el archivo de recursos de Strings tenemos:

 <string name="app_name">MyAppTitle</string> 

En "onCreate" de la clase MainActivity:

 ... //add version to application title int versionCode = BuildConfig.VERSION_CODE; // unused in my application String versionName = BuildConfig.VERSION_NAME; this.setTitle(this.getTitle() + " v"+ versionName); ... 

El resultado es "MyAppTitle v1.3"

  • Cómo generar diagrama UML en Android Studio 2.2
  • Módulo importado en Android Studio no puede encontrar la clase importada
  • Error de ADB y Genymotion: "servidor de adb está desactualizado. Matar ... no puede enlazar 'tcp: 5037' servidor ADB no ACK "
  • ¿Dónde está proguard-rules.txt en android studio?
  • Reemplazar una cadena en AndroidManifest.xml para un buildvariant no funciona para Gradle Android Plugin Version> 0.5.4
  • Error al crear un proyecto de Android con los servicios de Google Play
  • ¿Qué es el uso de android: supportsRtl = "true" en AndroidManifest xml file
  • Error en la compilación de gradle después de actualizar Android Studio con log4j
  • ¿Tiene Android Studio un visor de jerarquía?
  • Ninguna faceta de Android encontrada en el módulo
  • ¿Por qué estoy recibiendo este error "recurso esperado de tipo raw" en Android Studio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.