cadenas personalizadas para debug buildType

Tengo una aplicación para Android y quiero cambiar la etiqueta de la aplicación para la depuración y otros buildTypes . ¡No tengo sabores!

Aquí está la configuración que creo que parece que debería funcionar: Configuración de Android Studio

-src |-debug |-res |-values |-strings.xml |-main |-res |-values |-strings.xml |-java [...] 

No tengo fuentes personalizadas sólo un debug buildType:

 buildTypes { debug { applicationIdSuffix ".debug" } } 

así que pensé

 sourceSets.debug.res.srcDirs = ['src/debug/res'] 

haría el truco. Pero no lo hace. ¿Algunas ideas?

Cómo cambiar el nombre de la aplicación por tipo de generación de Gradle ya no funciona …

Encontré otra solución dulce a esto, usando marcadores de posición manifiestos:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="${applicationLabel}"> <activity android:label="${applicationLabel}"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

y en su archivo gradle:

 android { defaultConfig { manifestPlaceholders = [ applicationLabel:"@string/app_name"] } buildTypes { debug { applicationIdSuffix ".debug" manifestPlaceholders = [ applicationLabel:"MyApp Debug"] } } } 
 buildTypes { release { resValue 'string', 'APP_NAME', '"My App Release"' } debug { resValue 'string', 'APP_NAME', '"My App Debug"' } } 

valor \ strings.xml

<string name = "app_name"> @ string / APP_NAME </ string>

y use app_name en todas partes

Tienes que usar

  |-debug |-res |-values |-strings.xml 

En tu imagen tienes debug / res / strings.xml

También usted doens't lo necesita (porque es el estándar, pero el problema no está aquí).

 sourceSets.debug.res.srcDirs = ['src/debug/res'] 

Olvídate de los archivos string.xml. Todos se pueden configurar fácilmente en build.gradle.

En primer lugar, debe mantener el puntero de cadena "app_name" en el archivo AndroidManifest y eliminar todas las instancias de "app_name" en los archivos de recursos de la cadena:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="@string/app_name"> <activity android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

En segundo lugar, el valor del recurso de @ string / app_name no está definido actualmente. Así que debemos aplicar su definición por defecto en build.gradle:

 defaultConfig { applicationId "com.example.myapp" minSdkVersion 14 targetSdkVersion 22 versionCode 123423432 versionName "1.0.0" resValue 'string', 'app_name', '"My app label"' } 

Actualmente, app_name se define para todos los tipos de compilación. Al suponer que desea cambiar la etiqueta de la aplicación para los tipos de construcción, cada tipo de construcción debe definirse con un valor de cadena en la misma rama build.gradle:

 buildTypes { release { resValue 'string', 'app_name', '"My app label Release"' } debug { resValue 'string', 'app_name', '"My app label Debug"' } } 

Dado que este valor de recurso se establece de forma programática, también necesitamos agregar un cierto descontexto de traducciones de lenguajes en caso de una compilación de Release :

 lintOptions { disable 'MissingTranslation' } 

En caso de que quiera cambiarlo en consecuencia con un conjunto de Flavors definidos (dev, qua o prd) agregue las definiciones resValues ​​en productFlavours en lugar de buildTypes :

 productFlavors { dev { applicationId "com.example.myapp.dev" resValue 'string', 'app_name', '"My app label Dev"' } qua { applicationId "com.example.myapp.qua" resValue 'string', 'app_name', '"My app label Qua"' } prd { applicationId "com.example.myapp.prd" resValue 'string', 'app_name', '"My app label Prd"' } } 

Puede crear una cadena en gradle que estará disponible en xml también:

 buildTypes { debug { buildConfigField "String", "app_name", "AppDebug" } release { buildConfigField "String", "app_name", "AppRelease" } 

Y luego usarlo en xml:

 android:label="@string/app_name" 

Sólo asegúrese de que app_name no app_name especificado en strings.xml .

Prueba esto.

 buildTypes { debug { applicationIdSuffix ".debug" } sourceSets.debug.resources.srcDirs = ['src/debug/res'] } 

¿Se ha acordado de deshacerse de la lista de directorios dentro de su aplicación build.gradle?

 sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDir 'src' // res.srcDir 'res' <--- This line should be removed assets.srcDir 'assets' 

Sé que esta es una vieja pregunta, pero he tenido el mismo problema y lo solucioné.

Debe actualizar estos códigos si tiene uno en su build.gradle para su aplicación.

 debug.setRoot('build-types/debug') release.setRoot('build-types/release') 

Estos códigos generan automáticamente su AppName.iml y establecen el directorio de depuración y liberación predeterminado en /build-types/debug/res , que es diferente de src/debug/res .

  • No se puede encontrar la entrada de Keystore. Pero sé que está ahí
  • Diferencia entre limpio, gradlew limpio
  • Android Studio 2.1.1: "no se detectaron dispositivos usb ni emuladores en ejecución"
  • Android / Gradle / Unity - incluye todas las dependencias en el complemento AAR
  • Resuelto: No se puede cargar la clase 'org.gradle.internal.logging.LoggingManagerInternal'. Posibles causas de este error inesperado
  • No se pudo encontrar el método android () para los argumentos al crear un proyecto de Android desde gradle
  • Android Studio - tarea de gradle para ejecutar después de SYNC
  • Módulo de importación de Android Studio Error de generación de Gradle
  • Android Studio, errores de Gradle. Contenido no permitido en Prolog
  • Proguard no advierte y dontnote que no toma efecto
  • Herramientas de construcción 21.1.2 - EXCEPCION INESPERADA DE NIVEL SUPERIOR
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.