首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android级库资源在产品风味中的应用

Android级库资源在产品风味中的应用
EN

Stack Overflow用户
提问于 2014-05-20 11:08:14
回答 1查看 5K关注 0票数 4

更新为gradle 1.12,gradle插件用于android 0.10。

我的项目有以下结构:

  • 第三党

代码语言:javascript
复制
- Graphics 
    - Iconsets 
        - **IconsetBase** (android-library)
        - **Iconset1**    (android-library)
        - **Iconset2**    (android-library)

  • MainProject

代码语言:javascript
复制
- src 
    - **main**    (main project)
    - **flavor1**
    - **flavor2**
    - ...

如何将IconsetBase + Iconset1的res文件夹内容合并为flavor1,将IconsetBase + Iconset2合并为flavor2?

在升级到新级别之前,这是因为库(IconsetBase、Iconset1和Iconset2)具有与main相同的包名。

以下是我的build.gradle of main项目:

代码语言:javascript
复制
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个)。

这可以通过一些没有库的自定义任务来实现吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 11:58:56

您可以按口味定义特定的依赖关系:

代码语言:javascript
复制
productFlavors {
    flavor1 {
       ...
       dependencies {
         flavor1Compile project(':iconSet1')
       }
    }
    flavor2 {
       ...
       dependencies {
         flavor2Compile project(':iconSet2')
       }
    }
 }

在您的构建中,依赖项位于SourceSets中,这是错误的。

编辑

好吧,我希望我现在能更好地理解你的目标。您可以为每种口味定义多个资源目录:

代码语言:javascript
复制
android {
    sourceSets {
        flavor1 {
            res.srcDirs = ['flavor1','../3rdparty/Graphics/Iconsets/Iconset1/res']
        }
        flavor2 {
            res.srcDirs = ['flavor2','../3rdparty/Graphics/Iconsets/Iconset2/res']
        }
    }

}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23758134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档