如何为不同的gradle buildTypes提供不同的Android应用程序图标?
我在我的gradle文件中设置了两个构buildtypes: debug
和release
。 我希望能够为debug
构buildtypes设置一个不同的应用程序图标。 有没有什么办法通过构buildtypes,没有进入产品口味? 下面是build.gradle文件。
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']) }
弄清楚了。 你需要做的是创build一个名为debug
的单独的src文件夹来保存不同的图标。 例如,如果您的项目布局如下所示,并且您的启动器图标称为ic_launcher.png
:
[Project Root] -[Module] -src -main -res -drawable-* -ic_launcher.png
然后为debugging版本types添加一个单独的图标,添加:
[Project Root] -[Module] -src -main -res -drawable-* -ic_launcher.png -debug -res -drawable-* -ic_launcher.png
然后,在构builddebugging构buildtypes时,它将使用debugging文件夹中的ic_launcher。
这是一个方便的方法,虽然它有一个重要的缺点…两个发射器将被放入您的apk。 – Bartek Lipinski
更好的方法: 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" ] } } }
Githuburl: 使用Gradle构build多版本应用程序
您也可以在产品风味的部分AndroidManifest.xml文件中指定图标:
<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>
这将覆盖您在原始AndroidManifest.xml中指定的图标
为了在使用不同风格的多个维度时获得不同的图标,例如:
flavorDimensions "color", "size" productFlavors { black { dimension "color" } white { dimension "color" } big { dimension "size" } small { dimension "size" } }
这可以实现为:
首先,将debugging资源放在单独的文件夹中,如:
src/blackDebug/res src/whiteDebug/res
其次,把多个风味维度的关键字放在一起,即源代码集名称必须包含所有可能的风味组合,即使其中一些维度不影响图标。
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' }
为了说清楚,在使用多个维度时,以下内容不起作用 :
sourceSets { // Override the icons in debug mode blackDebug.res.srcDir 'src/blackDebug/res' whiteDebug.res.srcDir 'src/whiteDebug/res' }