android - studio - flavordimensions
¿Cómo proporcionar diferentes iconos de aplicaciones de Android para diferentes gradle buildTypes? (4)
Este es un enfoque práctico, aunque tiene una desventaja importante ... ambos lanzadores serán puestos en su apk. - Bartek Lipinski
La mejor manera: la respuesta de InsanityOnABun
AndroidManifest.xml
<manifest
...
<application
android:allowBackup="true"
android:icon="${appIcon}"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
</manifest>
build.gradle
android {
...
productFlavors{
Test{
versionName "$defaultConfig.versionName" + ".test"
resValue "string", "app_name", "App-Test"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher_test"
]
}
Product{
resValue "string", "app_name", "App"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
}
}
}
la url de Github: compila la aplicación de varias versiones con Gradle
Tengo dos tipos de compilación configurados en mi archivo gradle: debug
y release
. Me gustaría poder establecer un ícono de aplicación diferente para el tipo de compilación de debug
. ¿Hay alguna forma de hacerlo solo a través del tipo de compilación, sin entrar en los sabores del producto? El archivo build.gradle está debajo.
apply plugin: ''android''
//...
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 30
versionName "2.0"
}
buildTypes {
debug {
packageNameSuffix ''.debug''
versionNameSuffix ''-SNAPSHOT''
}
release {
runProguard false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
}
Lo averigué. Lo que debe hacer es crear una carpeta src separada llamada debug
que contenga los diferentes iconos. Por ejemplo, si el diseño de su proyecto es el siguiente, y su icono de ic_launcher.png
se llama ic_launcher.png
:
[Project Root]
-[Module]
-src
-main
-res
-drawable-*
-ic_launcher.png
Luego, para agregar un icono separado para el tipo de compilación de depuración, agregue:
[Project Root]
-[Module]
-src
-main
-res
-drawable-*
-ic_launcher.png
-debug
-res
-drawable-*
-ic_launcher.png
Luego, cuando compile bajo el tipo de compilación de depuración, usará el ic_launcher que se encuentra en la carpeta de depuración.
Para obtener diferentes iconos al usar diferentes sabores con múltiples dimensiones, tales como:
flavorDimensions "color", "size"
productFlavors {
black {
dimension "color"
}
white {
dimension "color"
}
big {
dimension "size"
}
small {
dimension "size"
}
}
Esto se puede lograr como:
Primero, coloque los recursos de depuración en carpetas separadas, como:
src/blackDebug/res
src/whiteDebug/res
Segundo, poner la clave con múltiples dimensiones de sabor es que el nombre del conjunto de orígenes debe contener todas las combinaciones de sabores posibles, incluso si algunas de estas dimensiones no afectan el icono.
sourceSets {
// Override the icons in debug mode
blackBigDebug.res.srcDir ''src/blackDebug/res''
blackSmallDebug.res.srcDir ''src/blackDebug/res''
whiteBigDebug.res.srcDir ''src/whiteDebug/res''
whiteSamllDebug.res.srcDir ''src/whiteDebug/res''
}
Para dejarlo en claro, lo siguiente no funcionará cuando se usan múltiples dimensiones:
sourceSets {
// Override the icons in debug mode
blackDebug.res.srcDir ''src/blackDebug/res''
whiteDebug.res.srcDir ''src/whiteDebug/res''
}
También puede especificar el icono en el archivo AndroidManifest.xml parcial del sabor del producto:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:icon"
android:icon="@drawable/alternative_icon" />
</manifest>
Esto sobrescribirá el ícono que especifiques en el archivo original AndroidManifest.xml