Как обеспечить различную иконку запуска на продукт
У меня есть проект, определяемый файлом 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"
}
}
}
Он отлично работает, но теперь я хочу предоставить конкретные иконки запуска для каждого продукта. Я попытался добавить дополнительный файл манифеста для Amazon, но это не сработало. Я получил сообщение об ошибке "Дублирует файлы, скопированные в APK AndroidManifest.xml". Что может быть неправильным?
Ответы
Ответ 1
У вас есть несколько вариантов:
-
Переключитесь на новый макет студии android studio/ gradle и создайте папки для вашего продуктаFlavors:
src/main/
- Общий код/ресурсы во всех вкусах
src/amazon
- специальный код/ресурсы Amazon для всех вкусов
src/google
- код или ресурсы Google, соответствующие всем вкусам
Итак, в вашем основном манифесте (src/main/AndroidManifest.xml
), если ваш android:icon
равен @drawable/icon
, у вас будет соответствующий значок, расположенный в src/amazon/res/drawable-*/icon.png
, а также для остальных ваших продуктов. >
-
Сохраните существующий макет (и build.gradle) и добавьте каталог ресурсов в res.srcDirs
:
Итак, для ваших амазонковых источников:
android.sourceSets.amazon {
res.srcDirs = ['res', '/path/to/amazon/res/dir']
}
И затем в вашем /path/to/amazon/res/dir/drawable-*
у вас будет значок вашей пусковой установки.