Comment fournir différentes icons d’application Android pour différents buildTypes?

J’ai deux types de build définis dans mon fichier gradle: debug et release . J’aimerais pouvoir définir une autre icône d’application pour le type de construction de debug . Y a-t-il un moyen d’y parvenir simplement par le type de construction, sans entrer dans les saveurs du produit? Le fichier build.gradle est ci-dessous.

 apply plugin: 'android' //... android { comstackSdkVersion 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 { comstack fileTree(dir: 'libs', include: ['*.jar']) } 

Deviner. Ce que vous devez faire, c’est créer un dossier src distinct appelé debug qui contient les différentes icons. Par exemple, si la disposition de votre projet est la suivante, et que votre icône de lanceur s’appelle ic_launcher.png :

 [Project Root] -[Module] -src -main -res -drawable-* -ic_launcher.png 

Ensuite, pour append une icône distincte pour le type de génération de débogage, vous ajoutez:

 [Project Root] -[Module] -src -main -res -drawable-* -ic_launcher.png -debug -res -drawable-* -ic_launcher.png 

Ensuite, lorsque vous construisez sous le type de construction de débogage, il utilisera le ic_launcher trouvé dans le dossier de débogage.

C’est une approche pratique bien qu’elle présente un inconvénient important… les deux lanceurs seront mis dans votre apk. – Bartek Lipinski

Le meilleur moyen: la réponse de InsanityOnABun

AndroidManifest.xml

  ...   

build.gradle

 android { ... productFlavors{ Test{ versionName "$defaultConfig.versionName" + ".test" resValue "ssortingng", "app_name", "App-Test" manifestPlaceholders = [ appIcon: "@mipmap/ic_launcher_test" ] } Product{ resValue "ssortingng", "app_name", "App" manifestPlaceholders = [ appIcon: "@mipmap/ic_launcher" ] } } } 

l’URL Github: créer une application multi-version avec Gradle

Vous pouvez également spécifier l’icône dans le fichier AndroidManifest.xml partiel de l’arôme produit:

    

Cela remplacera l’icône que vous spécifiez dans l’original AndroidManifest.xml

Pour obtenir des icons différentes tout en utilisant différentes saveurs aux dimensions multiples, telles que:

 flavorDimensions "color", "size" productFlavors { black { dimension "color" } white { dimension "color" } big { dimension "size" } small { dimension "size" } } 

Cela peut être réalisé comme:

Tout d’abord, placez les ressources de débogage dans des dossiers distincts, tels que:

 src/blackDebug/res src/whiteDebug/res 

Deuxièmement, mettre la clé avec plusieurs dimensions de saveur signifie que le nom du source doit contenir toutes les combinaisons de saveurs possibles, même si certaines de ces dimensions n’affectent pas l’icône.

 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' } 

Pour que ce soit clair, les éléments suivants ne fonctionneront pas lorsque plusieurs dimensions sont utilisées:

 sourceSets { // Override the icons in debug mode blackDebug.res.srcDir 'src/blackDebug/res' whiteDebug.res.srcDir 'src/whiteDebug/res' }