首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于(主)项目模块口味的分级子项目外部库依赖关系

基于(主)项目模块口味的分级子项目外部库依赖关系
EN

Stack Overflow用户
提问于 2016-03-22 14:06:10
回答 2查看 1.7K关注 0票数 2

我有两个模块,一个是应用程序,一个是和两个外部maven库。

外部库略有差异,与maven分类器一起根据构建风格进行选择。

(子项目/模块)和(主模块)都根据风味使用相同的外部库。

我的问题是编译时无法控制/选择子项目库。

模块应用程序:

代码语言:javascript
运行
复制
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'

android {
productFlavors {
fOne {}
fTwo {}
}
}

dependencies {   
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:gridlayout-v7:22.2.1'
    compile 'com.android.support:support-annotations:22.2.1'

// selecting the library based on the flavour
fOneCompile(group: 'com.xyz', name: 'SDK', version: '1.0', ext: 'aar')
fTwoCompile(group: 'com.xyz', name: 'SDK', version: '1.0', classifier: 'qa', ext: 'aar')

 //<< the library also needs the com.xyz.SDK
 fOneCompile project(path: ':library', configuration: "fOneCompile") 
 fTwoCompile project(path: ':library', configuration: "fTwoCompile")


}

模块库:

代码语言:javascript
运行
复制
apply plugin: 'com.android.library'
android {
....
}

repositories{    
  jcenter()
  flatDir{
      dirs 'libs'
   }
}

configurations {
    fOne
    fTwo 
}

dependencies {
    ??? what goes here, flavours are not available ??? 
    //the library also needs the com.xyz.SDK
    fOneCompile(group: 'com.xyz', name: 'SDK', version: '1.0', ext: 'aar')
    fTwoCompile(group: 'com.xyz', name: 'SDK', version: '1.0', classifier: 'qa', ext: 'aar')
}

模块无法编译,因为它找不到SDK,我需要根据编译的风格包括一个。

EN

回答 2

Stack Overflow用户

发布于 2017-06-28 06:45:57

使用此配置:

代码语言:javascript
运行
复制
defaultConfig {
       publishNonDefault true
}

configurations {
    fOneDebugCompile
    fOneReleaseCompile
    fTwoDebugCompile
    fTwoReleaseCompile
}
票数 1
EN

Stack Overflow用户

发布于 2016-04-11 12:50:24

解决方案非常简单,因为存在重复的依赖关系,主项目选择适当的依赖项,在解决依赖关系时,可以在子模块中使用“提供”语句。

在这种情况下,可以将依赖项部分中的“编译”语句替换为模块库(子模块)中的“提供”语句:

模块库:

代码语言:javascript
运行
复制
apply plugin: 'com.android.library'
android {
....
}

repositories{    
  jcenter()
  flatDir{
      dirs 'libs'
   }
}

dependencies {
    //the library also needs the com.xyz.SDK
    provided(group: 'com.xyz', name: 'SDK', version: '1.0', ext: 'aar')
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36156596

复制
相关文章

相似问题

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