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