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下貌似不生效)。

你可能感兴趣的:(Android Studio中jar包冲突解决方案(1))