已更新至gradle 1.12,android studio的gradle插件版本为0.10。
我的项目结构如下:
3rdparty
- Graphics
- Iconsets
- IconsetBase (android库)
- Iconset1 (android库)
- Iconset2 (android库)
- Iconsets
- Graphics
MainProject
- src
- main (主要项目)
- flavor1
- flavor2
- ...
- src
如何将IconsetBase和Iconset1的res文件夹内容合并到flavor1中,将IconsetBase和Iconset2的res文件夹内容合并到flavor2中?
在升级到新的gradle之前,这个操作是可行的,因为库(IconsetBase、Iconset1和Iconset2)与main具有相同的包名。
以下是主要项目build.gradle的内容:
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=
进一步解释:
我希望可以动态地从另一个位置合并资源。
背景:flavor1有基本图标集,其中包含图像icon1和icon2,flavor2也有基本图标集和icon1和icon2,但每个图标集的图标都不同。否则,每个flavor上必须多次拥有icon1、icon2等,并且在更新/更改这些图标时,必须为每个现有的flavor进行操作(我有超过20个flavor)。
是否可以通过某些自定义任务来实现此目标而不使用库?