Android Studio 关于多个module引用同一jar包的问题

Android Studio 关于多个module引用同一jar包的问题

    Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
    > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry:

android 5.0以上就可以避免重复引用的问题

android 5.0以下如果是gradle依赖重复是没有影响的

例如app.build中包含

    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.android.support:support-v4:23.3.0'

而同样另一个module:base.build也包含相同的gradle依赖是没问题的

gradle依赖和jar包依赖互相是有影响的

不同module中的gradle依赖和jar包依赖互相是有影响的,建议都改为gradle依赖避免lib依赖
或者可以删除app(module)中的依赖而使用库本身的,因为app本身是依赖于库的

两个module中引用了同一jar包,又必须用该jar包

将任意一个Module中的jar依赖为compile files(‘your jar name’),其他需要依赖的地方改为provided files(‘your jar name’)并且删除compile fileTree(include: [‘*.jar’], dir: ‘libs)。即可。

多种情况说明

假设项目引用了类库 A 和类库 B ,同时,这两个类库都依赖包 C 。
1. 如果 A 、B 、C 均为 Maven 依赖,可以直接使用,不会存在冲突问题。
如果还是有问题,则在主项目可以去除 A 、B 中的 C 。
主项目:
compile ‘a.group:a.artifactId:a.version’ {
exclude group: ‘c.groupId’, module: ‘c.artifactId’
}
compile ‘b.group:b.artifactId:b.version’ {
exclude group: ‘c.groupId’, module: ‘c.artifactId’
}
compile ‘c.groupId:c.artifactId:c.version’
2. 如果 A 、B 均为 Maven 依赖,C 为 jar 依赖。则将 C 复制到主项目、A 、B 中,主项目 compile C ,A 、B provided C 。
主项目: compile files(‘libs/C.jar’)
A 、B 项目:provided files(‘libs/xx.jar’)
3. 如果 A 、B 均为 Library Project 依赖,C 为 jar 依赖。同 2 。
4. 如果 A 、B 均为 Library Project 依赖,C 为 Maven 依赖。同 2 或者 1(Maven 依赖也可以进行 provided 处理)。
5. 如果 A 为 Maven 依赖或者 Library Project 依赖,B 为 jar 依赖,C 为 jar 依赖。
A 项目:provided files(‘libs/xx.jar’)
B 项目和主项目,不做其他任何处理。
6. 如果 A 、B 、C 均为 jar 依赖,尝试重新将 A 、B 打包,将 C 剥离出来。

Duplicate files copied in APK META-INF/LICENSE 解决方案

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
}

小贴士

个人建议最好不要放jar在lib库,以及不要加下面这句

compile fileTree(include: ['*.jar'], dir: 'libs')

而是用

compile files('libs/jikmediaplayer.jar')

去替代,好处在于即使引用了lib里面的jar也很清晰明了的在grade中看到而不至于花很长时间去找重复的jar

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值