para - gradle version android studio
Cómo cambiar el nombre de la aplicación por tipo de compilación de Gradle (7)
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 que la versión de depuración tenga <APP_NAME>-debug
y que la versión qa tenga <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 está en el iniciador.
El nombre de la aplicación es visible por el usuario, y es por eso que Google lo alienta a mantenerlo en su archivo strings.xml. Puede definir un archivo de recursos de cadenas separado que contiene cadenas que son específicas de sus buildTypes. Parece que podrías tener un qa
buildType personalizado. Si eso no es cierto, ignore la parte qa a continuación.
└── src
├── debug
│ └── res
│ └── buildtype_strings.xml
├── release
│ └── res
│ └── buildtype_strings.xml
└── qa
└── res
└── buildtype_strings.xml
Necesitamos una solución para apoyar el nombre de la aplicación con localización (para múltiples 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 arreglar este error: archivo build.gradle:
android {
ext{
APP_NAME = "@string/app_name_default"
APP_NAME_DEV = "@string/app_name_dev"
}
productFlavors{
prod{
manifestPlaceholders = [ applicationLabel: APP_NAME]
}
dev{
manifestPlaceholders = [ applicationLabel: APP_NAME_DEV ]
}
}
values / strings.xml:
<resources>
<string name="app_name_default">AAA prod</string>
<string name="app_name_dev">AAA dev</string>
</resources>
values-en / strings.xml:
<resources>
<string name="app_name_default">AAA prod en</string>
<string name="app_name_dev">AAA dev en</string>
</resources>
Manifest.xml:
<application
android:label="${applicationLabel}" >
</application>
Para respaldar las traducciones, haga esto:
1. eliminar la cadena "app_name"
2. agregar a gradle
buildTypes {
admin {
resValue "string", "app_name", "@string/app_name_admin"
}
release {
resValue "string", "app_name", "@string/app_name_release"
}
debug {
resValue "string", "app_name", "@string/app_name_debug"
}
}
3. Establezca el nombre de la aplicación en Manifiesto como "@ string / app_name"
4. Agregue a los valores strings.xml
<string name="app_name_admin">App Admin</string>
<string name="app_name_release">App release</string>
<string name="app_name_debug">App debug</string>
Para una solución más dinámica basada en gradle (por ejemplo, establezca un nombre de aplicación base en strings.xml
de strings.xml
una vez, y evite repetirse en cada strings.xml
de combinación de tipo de compilación / tipo de strings.xml
), consulte mi respuesta aquí: https://.com/a/32220436/1128600
Puedes hacer esto con gradle:
android {
buildTypes {
release {
manifestPlaceholders = [appName: "My Standard App Name"]
}
debug {
manifestPlaceholders = [appName: "Debug"]
}
}
}
Luego, en su AndroidManifest.xml
ponga:
<application
android:label="${appName}"/>
<activity
android:label="${appName}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Nota: también funciona con productFlavors
.
Puedes usar algo como esto
buildTypes {
debug {
applicationIdSuffix ''.debug''
versionNameSuffix ''-DEBUG''
resValue "string", "app_name", "AppName debug"
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
signingConfig signingConfigs.release
zipAlignEnabled true
resValue "string", "app_name", "AppName"
}
}
Puede usar @ string / app_name en los archivos AndroidManifest.xml.
Asegúrese de eliminar app_name de los valores / carpeta (no hay entrada con este nombre).
Si por "nombre de la aplicación", te refieres a android:label
en <application>
, la solución más simple es tener ese punto en un recurso de cadena (eg, android:label="@string/app_name"
), luego tener una versión diferente de ese recurso de cadena en un src/debug/
sourceset.
Puede verlo en este proyecto de ejemplo , donde tengo un reemplazo para app_name
en src/debug/res/values/strings.xml
, que se aplicará para compilaciones de debug
. release
versiones de release
usarán la versión de app_name
en src/main/
.