如何为每种产品风格提供不同的启动器图标
Posted
技术标签:
【中文标题】如何为每种产品风格提供不同的启动器图标【英文标题】:How to provide different launcher icon per product flavour 【发布时间】:2013-08-29 21:14:52 【问题描述】:我有一个由 build.gradle 文件定义的项目
buildscript
repositories
mavenCentral()
dependencies
classpath 'com.android.tools.build:gradle:0.5.6'
apply plugin: 'android'
dependencies
compile fileTree(dir: 'libs', include: '*.jar')
android
compileSdkVersion 17
buildToolsVersion "17.0.0"
sourceSets
main
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['resources']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
instrumentTest.setRoot('tests')
defaultConfig
...
signingConfigs
debug
storeFile file("debug.keystore")
release
...
buildTypes
debug
debuggable true
jniDebugBuild true
signingConfig signingConfigs.debug
packageNameSuffix ".debug"
versionNameSuffix ".debug"
release
debuggable false
jniDebugBuild false
signingConfig signingConfigs.release
flavorGroups "version", "market"
productFlavors
amazon
flavorGroup "market"
buildConfig "public static final int COMPILATION = 1;"
google
flavorGroup "market"
buildConfig "public static final int COMPILATION = 0;"
lite
flavorGroup "version"
packageName = "package.name.lite"
full
flavorGroup "version"
packageName = "package.name.full"
android.sourceSets.amazon
res
srcDir "amazon"
manifest
srcFile "amazon/AndroidManifest.xml"
android.sourceSets.google
res
srcDir "google"
android.sourceSets.full
res
srcDir "full"
android.sourceSets.lite
res
srcDir "lite"
它工作正常,但现在我想为每种产品风格提供特定的启动器图标。我试图为亚马逊添加额外的 Manifest 文件,但没有成功。我收到错误“在 APK AndroidManifest.xml 中复制的文件重复”。有什么问题?
【问题讨论】:
安卓风格的演示goo.gl/5NSnEM 【参考方案1】:你有几个选择:
切换到新的 android studio/gradle 布局并为您的 productFlavors 创建文件夹:
src/main/
- 跨所有风格的共享代码/资源src/amazon
- 跨所有风格的亚马逊特定代码/资源src/google
- 跨所有风格的谷歌特定代码/资源
因此,在您的主清单 (src/main/AndroidManifest.xml
) 中,如果您的 android:icon
是 @drawable/icon
,您将在 src/amazon/res/drawable-*/icon.png
中找到相应的图标,对于您的其余 productFlavors 也是如此。
保留现有布局(和 build.gradle)并将资源目录附加到 res.srcDirs
:
所以,对于您的亚马逊资源集:
android.sourceSets.amazon
res.srcDirs = ['res', '/path/to/amazon/res/dir']
然后在您的/path/to/amazon/res/dir/drawable-*
中,您将拥有启动器图标。
【讨论】:
没关系,但只是部分。如果我只有 2 个图标,例如 google 和 amazon 版本或 lite 和完整版,它将起作用。问题是我有风味组,我希望精简版亚马逊的图标与谷歌的精简版不同。如果我为亚马逊提供图标,它将用于两个版本(精简版和完整版),我不希望这种行为。有没有像 AmazonLite 这样的特定任务,我可以在其中放置该图标,或者我必须删除风味组并只制作纯风味? @smoak 我需要手动为不同的 productFlavours 创建文件夹还是自动创建?以上是关于如何为每种产品风格提供不同的启动器图标的主要内容,如果未能解决你的问题,请参考以下文章