Android Studio中jar包冲突解决方案(1)

1.出现场景

我们在工程中通常会引用很多第三方的jar包,来丰富自己的项目。比较常见的v4包的冲突大家都知道如何解决,这里描述的是一种不同jar包中在META-INF文件夹下出现冲突的解决方案。

2. 冲突日志

我们在编译工程时很容易就可以看到冲突日志,比如下面的:

Error:Execution failed for task ':XXX:transformResourcesWithMergeJavaResForRelease'.
> com.android.build.api.transform.TransformException: 
com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: D:\...\libs\httpmime-4.0.jar
    File2: D:\...\libs\apache-mime4j-0.6.jar

这里httpmime-4.0.jarapache-mime4j-0.6.jar是两个不同的jar,在META-INF下却存在相同的文件。

3.解决方案

遇到该问题也无非是去除或者过滤冲突的文件。
我们需要在上面jar包对应的module下的build.gradle文件中增加如下内容:

//为了解决部分第三方库重复打包了META-INF的问题
android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
    }
}

需要注意的是我们这代码需要加在jar包对应的module的.gradle文件中,放在android { }里面就好了(放在其他module或者app下貌似不生效)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,016评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,306评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,967评论 25 709
  • 参考 中文官网构建指南:https://developer.android.google.cn/studio/bu...
    FinalSky阅读 10,812评论 0 16
  • 题目可能不太好听,觉得还是用这个题目,今天和朋友突然说起了这个话题,实在没有贬义的意思。 1. 我高三一个舍友小埋...
    李秋会_阅读 3,142评论 1 1