Cómo proporcionar icono de lanzador diferente por sabor de producto

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 específicos de lanzador para cada sabor del producto. Intenté poner un archivo de manifiesto extra para Amazon, pero no funcionó. Tengo un error "Duplica archivos copiados en APK AndroidManifest.xml". ¿Qué podría estar mal?

    Tienes un par de opciones:

    1. Cambie al nuevo diseño androide de studio / gradle y cree carpetas para su productFlavors:

      src/main/ – Código compartido / recursos en todos los sabores
      src/amazon – Amazon specific code / resources en todos los sabores
      src/google – Google specific code / resources en todos los sabores

      Así que en su manifiesto principal ( src/main/AndroidManifest.xml ) si su android:icon es @drawable/icon , tendría el icono apropiado situado en src/amazon/res/drawable-*/icon.png y también para el Resto de su producto.

    2. Mantenga su diseño existente (y build.gradle) y agregue un directorio de recursos al directorio res.srcDirs :

    Por lo tanto, para su fuente amazon:

     android.sourceSets.amazon { res.srcDirs = ['res', '/path/to/amazon/res/dir'] } 

    Y luego en tu /path/to/amazon/res/dir/drawable-* tendrías tu icono de lanzador.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.