Estoy tratando de encontrar una manera de poder cambiar el nombre de la aplicación de mi aplicación por tipo de compilación en gradle.
Por ejemplo, me gustaría tener la versión de depuración <APP_NAME>-debug
y la versión qa tener <APP-NAME>-QA
.
Estoy familiarizado con:
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
Sin embargo, parece que no puedo encontrar un comando gradle para aplicar el cambio de la aplicación cuando estoy en el iniciador.
fuente
release
cadenas.release
parte, veo que de manera un poco diferente, ya que uno también podría probar los problemas de localización al tiempo que permite que las compilaciones de "lanzamiento" y "prueba" coexistan en el mismo dispositivo. En tal caso, ambas compilaciones pueden terminar con la misma etiqueta de iniciador, lo que probablemente cause cierta confusión. Eso es lo que estaba tratando de evitar.release
modo. Y solo use este recurso de cadena paraapp_name
, no para ningún otro rol.app_name
, aunque no sea necesario (por ejemplo, tiene desarrolladores franceses o alemanes que no hablan inglés y, por lo tanto, deben traducirlo). Para realizar pruebas para ver si larelease
versión no modificada de lasapp_name
obras, con sus traducciones, prueba larelease
compilación o crea unnear-release
tipo de compilación que solo agrega el sufijo de ID de la aplicación y deja las cadenas en paz.Puedes usar algo como esto
Puede usar @ string / app_name en los archivos AndroidManifest.xml.
Asegúrate de eliminar app_name de los valores / carpeta (ninguna entrada con este nombre).
fuente
resValue "string", "app_name", System.getenv("APP_NAME") ?: "MyApp"
Puedes hacer esto con gradle:
Luego en tu
AndroidManifest.xml
puesto:Nota: también funciona con
productFlavors
.fuente
Para apoyar las traducciones, haga esto:
1. eliminar la cadena "nombre_aplicación"
2. agregar a gradle
3. Establezca el nombre de la aplicación en el Manifiesto como "@ string / app_name"
4. Agregar a valores strings.xml
fuente
app_name
en la sección del archivo productFlavorsbuild.gradle
. Un enfoque extremadamente conveniente y flexible cuando lo necesita.El nombre de la aplicación es visible para el usuario, y es por eso que Google lo alienta a mantenerlo en su archivo strings.xml. Puede definir un archivo de recursos de cadena separado que contenga cadenas que sean específicas para sus buildTypes. Parece que puede tener un
qa
buildType personalizado . Si eso no es cierto, ignore la parte qa a continuación.fuente
Necesitamos una solución para admitir el nombre de la aplicación con localización (para varios idiomas). He probado con la solución @Nick Unuchek, pero la construcción ha fallado (no se ha encontrado @ string /). un pequeño cambio para solucionar este error: archivo build.gradle:
valores \ cadenas.xml:
values-en \ strings.xml:
Manifest.xml:
fuente
tools:replace="android:label"
enapplication
enAndroidManifest
Para obtener una solución más dinámica basada en gradle (p. Ej., Establezca un nombre de aplicación base en main
strings.xml
una vez y evite repetirlo en cada combinación de sabor / compilaciónstrings.xml
), vea mi respuesta aquí: https://stackoverflow.com/a/32220436/1128600fuente
Puede usar
strings.xml
en diferentes carpetas, vea los valores de cadena separados de Android para las versiones de lanzamiento y depuración .Entonces, crea este archivo:
Luego péguelo en
app\src\debug\res\values\
yapp\src\release\res\values\
carpetas. Reemplace "Su nombre de aplicación" en depurar y liberar archivos. Retireapp_name
elemento destrings.xml
enapp\src\main\res\values\
carpeta.En
AndroidManifest
ti tendrás lo mismoNo hay cambios en absoluto. Incluso si agregó una biblioteca con su
AndroidManifest
archivo ystrings.xml
.fuente
Como el autor pide hacer esto en Gradle , podemos suponer que quiere hacerlo en el script y no en los archivos de configuración. Dado que tanto Android Studio como Gradle se han actualizado y modificado en gran medida en el último año (~ 2018), todas las demás respuestas anteriores parecen demasiado retorcidas. La manera más fácil es agregar lo siguiente a su
app/build.gradle
:fuente