Android gradle library resources in product color

Updated to gradle 1.12, gradle plugin for android studio 0.10.

My project has the following structure:

  • 3rdparty

    • Graphic arts
      • Iconsets
        • IconsetBase (android library)
        • Iconset1 ( Android Library)
        • Iconset2 (android library)
  • Mainproject

    • CSI
      • main (main project)
      • flavor1
      • flavor2
      • ...

How to get the contents of the res folder IconsetBase + Iconset1 to combine in flavor1 and IconsetBase + Iconset2 in flavor2?

Before upgrading to a new gradle, this worked like libraries (IconsetBase, Iconset1 and Iconset2) with the same package name as main

Here is my build.gradle of the main project :

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        repositories {
            mavenCentral()
        }
        classpath 'com.android.tools.build:gradle:0.10.0'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    useOldManifestMerger false
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    lintOptions {
       ...
    } 

sourceSets {
    main.java.srcDirs = ['src/main/java']
    main.resources.srcDirs = ['src/main/res']
}

signingConfigs {
    ...
}

buildTypes {
    ...
}

// Common dependencies
dependencies {
   compile project(':3rdparty:Graphics:Iconsets:IconsetBase')
}

defaultConfig {
    ...
}

productFlavors {
    flavor1         { packageName "..."}
    flavor2         { packageName "..."}
}

android.sourceSets.flavor1 {
    dependencies { compile project(':3rdparty:Graphics:Iconsets:Iconset1') }
    res { srcDir 'flavor1' }
    resources { srcDir 'flavor1' }
}
android.sourceSets.flavor2 {
    dependencies { compile project(':3rdparty:Graphics:Iconsets:Iconset2') }
    res { srcDir 'flavor2' }
    resources { srcDir 'flavor2' }
}
}

dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.google.android.gms:play-services:4.3.23'
}

= EDIT =

Further explanation:

, .

: flavor1 icon1 icon2, flavor2 1 2, . 1, 2 .. , / . ( 20).

?

+4
1

:

productFlavors {
    flavor1 {
       ...
       dependencies {
         flavor1Compile project(':iconSet1')
       }
    }
    flavor2 {
       ...
       dependencies {
         flavor2Compile project(':iconSet2')
       }
    }
 }

SourceSets .


, , . , :

android {
    sourceSets {
        flavor1 {
            res.srcDirs = ['flavor1','../3rdparty/Graphics/Iconsets/Iconset1/res']
        }
        flavor2 {
            res.srcDirs = ['flavor2','../3rdparty/Graphics/Iconsets/Iconset2/res']
        }
    }

}
+6

Source: https://habr.com/ru/post/1541249/


All Articles