productFlavors在Lib(Module)中的使用

前言

在前一篇文章中,介绍了productFlavors的基本应用

在这篇文章中,介绍如何在Lib(也就是Android studio的Module)中使用productFlavors。


添加productFlavors选项

在lib目录的build.gradle文件中添加productFlavors选项,如下图所示:
这里写图片描述

在图片中,我们在productFlavors中添加了lib_demo1和lib_demo2两个选项,并在lib项目中新建了lib_demo1和lib_demo2文件夹,添加了相应的资源文件。

在Lib中使用productFlavors选项,publishNonDefault true这一句配置,是一定要加的。

这句配置的作用是,Lib编译时,不使用默认的选项。也就是可以指定productFlavors中的选项来编译。

添加好了productFlavors选项,我们把lib依赖到项目中,编译。

但是编译并没有成功,为什么呢?


处理问题

编译失败的原因,是我们依赖lib的方式不对。

compile project(':lib_demo')    // 这是我们原来的依赖方式

我们应该换成这种依赖方式

compile project(path: ":lib_demo", configuration: 'lib_demo1Debug')
compile project(path: ":lib_demo", configuration: 'lib_demo2Debug')

如下图所示
这里写图片描述

为什么要换成这种依赖方式呢?

因为添加productFlavors之前,lib就只有默认的编译方式,而我们添加了productFlavors选项之后,lib就没有了默认的编译方式了,只有我们通过productFlavors指定的编译方式。

所以compile project(path: “:lib_demo”, configuration: ‘lib_demo1Debug’)这种依赖方式,就是显示的指定lib的版本。

既然是显示的指定lib依赖版本,你也可以不用lib的debug版本,而用release版本,如下图所示:
这里写图片描述

好了,我再次编译,但还是编译失败,提示

Error:Execution failed for task ‘:app:processDemo2DebugResources’.
Error: more than one library with package name ‘com.zcw.lib_demo’

继续解决问题

为什么会报more than one library with package name ‘com.zcw.lib_demo’这个错误呢?

这是因为我们用以下命令依赖lib时,相当于依赖了2次lib,所以包名重复,冲突了。

compile project(path: ":lib_demo", configuration: 'lib_demo1Debug')
compile project(path: ":lib_demo", configuration: 'lib_demo2Debug')

怎么解决呢?

用productFlavors相关内容解决。

因为我们在主项目(app)中也添加了productFlavors选项,选项中有demo1和demo2,所以我们分别为这两个选项指定不同的lib依赖。
我们可以看到,在dependencies中的androidTestCompile、testCompile命令,也是同理。

具体操作:
首先,在主项目(app)的build.gradle文件最外层添加以下配置:

configurations {
    demo1Compile
    demo2Compile
}

然后把依赖语句换成以下语句:

demo1Compile project(path: ":lib_demo", configuration: 'lib_demo1Debug')
demo2Compile project(path: ":lib_demo", configuration: 'lib_demo2Debug')

如下图所示:
这里写图片描述

然后编译,OK。


总结

到这里,productFlavors在Lib(Module)中的使用就介绍完了,productFlavors更丰富的配置,请自行查询资料。

示例完整代码下载地址


参考资料:如何在library中使用productFlavors

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值