android - studio - Cómo proporcionar un icono de iniciador diferente por sabor de producto
navigationview android (1)
Tengo un proyecto definido por el archivo 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"
}
}
}
Funciona bien, pero ahora quiero proporcionar iconos de iniciador específicos para cada sabor de producto. Traté de poner un archivo Manifest adicional para Amazon, pero no funcionó. Me aparece un error "Duplica los archivos copiados en APK AndroidManifest.xml". ¿Qué podría estar mal?
Usted tiene un par de opciones:
Cambie al nuevo diseño de android studio / gradle y cree carpetas para sus productFlavors:
src/main/
- Código / recursos compartidos en todos los sabores
src/amazon
- Código / recursos específicos de Amazon en todos los sabores
src/google
- Google código / recursos específicos entre todos los saboresEntonces, en su manifiesto principal (
src/main/AndroidManifest.xml
) si suandroid:icon
@drawable/icon
, usted tendría el icono apropiado ubicado ensrc/amazon/res/drawable-*/icon.png
y del mismo modo para el resto de su productoFlavors.Mantenga su diseño existente (y build.gradle) y anexe un directorio de recursos a los
res.srcDirs
:
Entonces, para su conjunto de orígenes de Amazon:
android.sourceSets.amazon {
res.srcDirs = [''res'', ''/path/to/amazon/res/dir'']
}
Y luego en tu /path/to/amazon/res/dir/drawable-*
tendrías el ícono del iniciador.