Android引包出现Duplicate class com.xxx.xxx found in modules错误

方法一:改依赖库的版本

其实就是依赖的包版本不一样,产生了冲突,把所有依赖的库改成版本一致的就可以了

注意:如果有多个library的引用,并且各自引入了 so库文件,编译时发生了so重复引入的问题,可以去掉其中一个分支的so文件的编译。

方法二:exclude aar中的jar包

场景一

要移除的jar包不在aar包中的classes.jar中
直接把aar包里的Jar打包的时候给去掉,就像下面这这样。注意,要使用exclude module这种方式,直接使用exclude group方式没有效果。exclude group的方法适用于exclude JAR包中的文件。

    implementation(name: '×××××××aar包', ext: 'aar') {
        exclude module: 'gson'
    }

场景二

要移除的jar包在aar包中的classes.jar中
这个时候,使用exclude方法已经不能生效了。你可以使用下面的通用方法,jar包也是这么处理

解压aar文件到tmpDir目录下
unzip ×××.aar -d tmpDir
找到classes.jar包,用压缩工具打开,删除目标文件
将tmpDir重新打包成一个新的aar
jar cvf ×××NewLib.aar -C tmpDir/ .
**补充:**我在Ubuntu下直接使用压缩工具打开aar包,然后删除其中的重复的文件,这个方法也是可行的。

方法三:compileOnly,只编译不打包

这个方法只能解决编译打包的问题,但是项目也无法调用该依赖中的资源,如果调用,会报错。 

参考:

Android引包出现Duplicate class com.xxx.xxx found in modules错误_哎吆我呸的博客-CSDN博客

gradle 几种依赖命令及文件冲突或包冲突_lfz2738942的博客-CSDN博客_gradle 依赖命令

Android Studio 引入Jar包,Jar包冲突问题总结_code豆腐的博客-CSDN博客 

猜你喜欢

转载自blog.csdn.net/weixin_42602900/article/details/124005566