昨天下班 要打包,突然就出现了这个问题, 一直是链接数据线 真机直接运行的, 可是打包就报下面的错。
Execution failed for task ':app:transformClassesWithMultidexlistForRelease Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.
话不多说, 直接整解决办法
这个问题 是因为, 在导入的 aar 或者module ,jar 的时候, 在他们内 出现了两个一模一样的 包名, 没错就是这么巧合。
第一:
首先再 androidstudio 的 Triminal 面板 输入 gradlew assembleRelease --stacktrace 然后回车, 等待它编译完成, 直接拉到日志的最后面。找到 Caused by, 和 Program type already present。
Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: com.google.android.exoplayer2.core.R(这是我的问题的日志)。
第二
在上面可以看到 是因为 com.google.android.exoplayer2 这个包重复。
复制关键字 exoplayer2 在 studio 内 双击shift 输入 exoplayer2 就可以检索 出 那个包内有这个 重复的 jar包。
第三
找到 是两个库后 , 一个 保持 原来的 引入方式不变(不管是aar , jar 还是mudule), 另一个 必须 用 jar 的方式引入, 只要将引入的方式 改成 compileOnly 依赖方式 即可。
再次打包, 就可以了