更新为gradle 1.12,gradle插件用于android 0.10。
我的项目有以下结构:
- Graphics
- Iconsets
- **IconsetBase** (android-library)
- **Iconset1** (android-library)
- **Iconset2** (android-library)
- src
- **main** (main project)
- **flavor1**
- **flavor2**
- ...
如何将IconsetBase + Iconset1的res文件夹内容合并为flavor1,将IconsetBase + Iconset2合并为flavor2?
在升级到新级别之前,这是因为库(IconsetBase、Iconset1和Iconset2)具有与main相同的包名。
以下是我的build.gradle of main项目:
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也有,但是每个图标集的图标是不同的。否则,我将不得不让icon1,icon2等每种口味很多次,在更新这些图标的/changes必须做的每一个味道存在(我有超过20个)。
这可以通过一些没有库的自定义任务来实现吗?
发布于 2014-05-20 11:58:56
您可以按口味定义特定的依赖关系:
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']
}
}
}https://stackoverflow.com/questions/23758134
复制相似问题