-
Notifications
You must be signed in to change notification settings - Fork 342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
transformClassesWithMultidexlistFor 工程每次都需要clean, 才能避免这个问题 #63
Comments
@binleo731 请问你的com.android.tools.build:gradle 插件版本为多少 |
@Knight-ZXW 3.2.1 |
@binleo731 尝试升级到 3.3.0及以上版本 ,看是否能够解决该问题。 |
@Knight-ZXW 谢谢你回复, 已经升级到 3.4.2, 还是出现这样的问题 |
我的现象是 工程的底层依赖有升级的时候,再次编译100%会出现type alreday exists, 需要clean项目才能解决。 你出现该问题是在什么场景? |
@Knight-ZXW 这个问题, 是我在 build 工程时必现的。 而且只要 build 过一次, 没有任何更改的情况下, 如果没有 clean, 再次 build,也会出现这个问题。我用的 wmrouter 已经是最新版本 |
我们的项目有一段时间好像也出现过你这种场景, 你的Android Studio ,gralde wrapper ,com.android.tools.build:gradle 的版本分别是多少 |
@Knight-ZXW AS-3.4.2, gradlew-5.5, gradle-plugin-3.4.2 |
@binleo731 我的环境基本和你一样,目前不会出现type already exists 的问题了。根据我的分析,这个问题应该跟wmrouter的插件无关,至少在我的场景下 问题应该是 com.android.tools.build:gradle插件的BUG。 我猜测的具体原因是: 具体代码在 com.android.tools.build:gradle:3.2.0 版本的 525行 processJarInput 函数中 if (!isIncremental || additionalPaths.contains(jarInput.getFile())) { 第一个判断语句中 additionalPaths.contains(jarInput.getFile())表示 jarInput路径包含在变动的文件中,此时应该是删除Dex缓存。 因此在3.3.0版本 以上函数改为了 if (!isIncremental ) { |
谢谢你的回复, 这个配置是我在你的建议升级后的版本。我刚刚将 wmrouter 依赖,以及 wmrouter 插件在原工程中删除之后, app:transformDexArchiveWithDexMergerForDevDebug 这个问题就没有再出现过了。从目前看, 我的工程是由 wmrouter 引起的transformDexArchiveWithDexMergerForDevDebug |
@Knight-ZXW 在测试过程中发现, 当 移除 apply plugin: 'WMRouter' 之后, 就不会再出现这个问题 |
我的也是 移除plugin之后就不会出现, 从我的测试上来看,这并不能说明就是wmrouter plugin的问题。 我也有试过 Arouter的plugin实现,同样也会出现这个问题(type alreday exists)。 因为我不太确定你的具体工程配置,无法确定你升级android-gradle版本后依旧会出现这个问题的原因,如果可以的话,你可以在github创建一个可以复现该问题的demo工程 我来看下。 |
+1,也遇到了这个问题,请问有进展吗 |
最近发布了新版本,支持增量编译,可以尝试一下看看这个问题有没有解决。 |
clean之后编译可以正常编译
编译一次之后再次编译无法编译,错误在transformClassesWithMultidexlistFor##Debug 这个流程中。
错误信息是
java.lang.RuntimeException: com.android.build.api.tranformException: Error while generating the main dex list
原因是
Program type already present: xxx
at com.andorid.build.gradle.internal.transforms.D8MainDexListTranform.tranform
现在成了必现问题, 每次都需要 clean, 才能 build 成功, 每次 build 都需要20分钟, 严重影响开发进度, 快解决下这个 bug 吧
The text was updated successfully, but these errors were encountered: