我有一个由 build.gradle 文件定义的项目
I have a project defined by build.gradle file
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 中复制的文件重复".有什么问题?
It works fine but now i want to provide specific launcher icons for every product flavor. I tried to put extra Manifest file for Amazon but it didn't work. I got an error "Duplicates files copied in APK AndroidManifest.xml". What could be wrong?
你有几个选择:
切换到新的 android studio/gradle 布局并为您的 productFlavors 创建文件夹:
Switch to the new android studio/gradle layout and create folders for your productFlavors:
src/main/ - 所有风格的共享代码/资源src/amazon - 各种风格的亚马逊特定代码/资源src/google - 各种风格的 Google 特定代码/资源
src/main/ - Shared code/resources across all flavors
src/amazon - Amazon specific code/resources across all flavors
src/google - Google specific code/resources accross all flavors
所以在你的主清单 (src/main/AndroidManifest.xml) 中,如果你的 android:icon 是 @drawable/icon,你将在 src/amazon/res/drawable-*/icon.png 中具有适当的图标,对于您的 productFlavors 的其余部分也是如此.
So in your main manifest (src/main/AndroidManifest.xml) if your android:icon is @drawable/icon, you would have the appropriate icon located in src/amazon/res/drawable-*/icon.png and likewise for the rest of your productFlavors.
保留现有布局(和 build.gradle)并将资源目录附加到 res.srcDirs:
Keep your existing layout (and build.gradle) and append a resource directory to the res.srcDirs:
所以,对于您的亚马逊资源集:
So, for your amazon sourceset:
android.sourceSets.amazon {
res.srcDirs = ['res', '/path/to/amazon/res/dir']
}
然后在你的 /path/to/amazon/res/dir/drawable-* 你会有你的启动器图标.
And then in your /path/to/amazon/res/dir/drawable-* you would have your launcher icon.
这篇关于如何为每种产品风格提供不同的启动器图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
更新到 Android Build Tools 25.1.6 GCM/FCM 后出现 IncompIncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出现 Incompatible
如何在 gradle 中获取当前风味How to get current flavor in gradle(如何在 gradle 中获取当前风味)
如何修复“意外元素<查询>在“清单How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修复“意外元素lt;查询gt;在“清单中找到错误
基于 Android Gradle 中多风味库的多风味应用Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多风味库的多风味应用)
Android 依赖在编译和运行时有不同的版本Android dependency has different version for the compile and runtime(Android 依赖在编译和运行时有不同的版本)
本地 aar 库的传递依赖Transitive dependencies for local aar library(本地 aar 库的传递依赖)