tutorial studio productflavors now must flavors flavordimensions flavor configurar belong all android gradle

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