运行一个app module 报了下面的错误
Caused by: java.io.IOException: Can't write [D:\WorkingFileJuphoon\sdkcode\Android\TestAgent
\build\intermediates\multi-dex\debug\componentClasses.jar]
(Can't read [C:\Users\ac\.gradle\caches\transforms-1\files-1.1\versionedparcelable-28.0.0
.aar\c295e2ca97948600928f9b11bb7e99cf\jars\classes.jar(;;;;;;**.class)]
(Duplicate zip entry [classes.jar:androidx/versionedparcelable/CustomVersionedParcelable.class]))
Can't read [C:\Users\ac\.gradle\caches\transforms-1\files-1.1\versionedparcelable-28.0.0.aar\c295e2
ca97948600928f9b11bb7e99cf\jars\classes.jar(;;;;;;**.class)]
Caused by: java.io.IOException:
Duplicate zip entry[classes.jar:androidx/versionedparcelable/CustomVersionedParcelable.class]
classes.jar 说明是导入的 jar 包中有资源冲突,CustomVersionedParcelable.class 这个类在导入的jar包中冲突了,首先我们需要找到导致冲突的 jar 包
第一步:在 AS 中双击 Shift 搜索 CustomVersionedParcelable.class 如下图
重点关注后面的jar包信息:Gradle:com.android.support:versionedparcelable:28.0.0@aar(classes.jar)
第二步:在我们自己的项目工程中找到这个jar包
先把项目切换到Project,点击 External Libraries,找到上面的jar包,如下图
可以看到果然存在 CustomVersionedParcelable.class 这个类,它和另外一个非本工程的jar包发生了冲突,如果你勾选Include non-project items会搜索出两个 jar包,都包含这个类
第三步:找到我们运行的那个app module里所依赖的所有jar包,看看冲突的那个jar包的上下依赖关系,结合build.gradle 中 dependencies 的依赖配置进行修改,在这一步中我们需要打开AS的Terminal终端执行一个指令:gradlew :TestAgent:dependencies 获取所有jar包,然后在终端通过Ctr+F 搜索 com.android.support:versionedparcelable 如下图
我运行的module名称 是 TestAgent,它依赖了另外两个 module:agent-aar 和 cloud,我们可以看一下这三个module的gradle配置信息首先是TestAgent
TestAgent解决办法:可以看到它导入了 com.google.android.material:material:1.1.0 这个依赖,正是由于这个依赖中的包也使用到了 com.android.support:versionedparcelable 这个包,所以会导致冲突,我们可以通过添加如下语句来修改 gralde 配置:
exclude group: 'androidx.versionedparcelable',module :'versionedparcelable' 修改后的配置文件如下图所示
这里需要注意的是,有可能不止一个包会引用 到 com.android.support:versionedparcelable 这个包,我第一次修改了上面的配置之后再次运行依然还是报原来的错误,直到我继续修改了另外两个module的配置之后才彻底修正这个错误
agent-arr cloud只有把所有引用到 com.android.support:versionedparcelable 的地方全部移除掉才行,本文参考了以下两篇文章,参考文章链接:
https://www.jianshu.com/p/cfcc5b630e1b
https://blog.csdn.net/cx1229/article/details/52786168
完,欢迎批评指正
网友评论