Sunday, May 29, 2016

Error: More than one library with package name ""

问题描述:
我不喜欢用 Actionbar 所以自定义一个ChowTitleBar, 本来放在项目中没有任何的问题,但是现在公司要求,要做好几个项目(定制软件,也叫外包)所以,我就将ChowTitleBar 提取出来作为一个第三方的库,但是,不同的项目中的色值是不同的,我就用 Gradle 的productFaver 解决色值的问题。针对不同的项目创建不同的ChowTitleBar, 然后在项目中引用。





error:
code:
compile 'com.chow.ui:mlw:1.1.2-release'compile 'com.chow.ui:gjb:1.1.2-release'compile 'com.chow.ui:xjlh:1.1.2-release'

出现错误的原因,是因为每一个远程的依赖仓库里面,都有一个 com.chow.ui.chowtitlebar 导致了gradle 编译代码的时候的二义性。 编辑器根本不知道你要用哪个?

我想了一些实现的方法,根本没什么卵用:
1  我想讲 com.chow.ui.chowtitlebar 抽取核心出来,然后创建多个  子项目 去继承com.chow.ui.chowtitlebar, 然后 compile 子项目,但是 也会出现这种问题。

2  然后,我想在 公司项目里面去做 com.chow.ui.chowtitlebar 的继承,在不同的productFaver 中实现不同的子类,但是有一个问题,就是色值的问题,我无法改变 lib 库中的色值!

以上的方案都不行:

然后,我想能不能再 build.gradle 里面去 有选择的依赖库的信息呢?我只想依赖一部分的 代码,而不是全部,搜了一下资料。貌似不行!  但是可以排除一些代码,我忘记了,你可以搜一下:

解决方案:
mlwCompile 'com.chow.ui:mlw:1.1.2-release'xjlhCompile 'com.chow.ui:gjb:1.1.2-release'gjbCompile 'com.chow.ui:xjlh:1.1.2-release'


原理:
每创建一个ProductFlavor就会自动创建一个基于它名字的编译依赖配置<productFlavor>Compile








屌屌的,再次感谢作者:  zly394
http://www.jianshu.com/users/56b93d979576/latest_articles







感谢:

Gradle之多版本打包不同依赖配置

http://www.jianshu.com/p/9b50c4059d61






No comments:

Post a Comment