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

更多相关文章

  1. 偶滴第一个安卓项目
  2. Android APP OPS移除应用程序项目的修改方法
  3. Android开源项目分类汇总【老外汇总版本】
  4. Android Studio NDK开发 Execution failed for task ':xxxx项目:
  5. Android Studio项目如何上传至JCenter
  6. Android实战项目:第一行代码CoolWeather
  7. android 项目源码
  8. Cocos项目避免不断复制粘贴android lib库的方法

随机推荐

  1. 100多个纯CSS3动画图标
  2. CSS3创意曲线循环菜单导航
  3. Apollo 源码解析 —— Portal 配置灰度规
  4. Apollo 源码解析 —— Config Service 通
  5. Apollo 源码解析 —— Config Service 配
  6. Apollo 源码解析 —— Portal 创建 Item
  7. Apollo 源码解析 —— Portal 灰度全量发
  8. Apollo 源码解析 —— Portal 认证与授权
  9. Apollo 源码解析 —— Admin Service 发
  10. Apollo 源码解析 —— Client 轮询配置