如何解决Android Studio打包APK时的Duplicate zip entry问题
Hey,这个multidex打包错误我之前也碰到过,大概率是缓存损坏、配置缺失或者依赖冲突搞的鬼,试试下面这几个办法,应该能搞定:
先清缓存再重构
先点Build > Clean Project把旧的构建文件清掉,接着选Build > Rebuild Project重新构建。很多时候就是缓存文件坏了,重新生成一遍就没事了。检查multidex的配置是否到位
先确认你的app模块下的build.gradle里已经正确开启了multidex:android { defaultConfig { // 其他配置项... multiDexEnabled true } } dependencies { // 用AndroidX的话就加这个,用support库的话换对应版本 implementation 'androidx.multidex:multidex:2.0.1' }如果你的App有自定义的Application类,记得要么让它继承
MultiDexApplication,要么在attachBaseContext方法里手动调用MultiDex.install(this):// 方式一:继承MultiDexApplication public class MyApp extends MultiDexApplication { // 你的业务代码... } // 方式二:手动安装multidex public class MyApp extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }别忘了在
AndroidManifest.xml里指定这个自定义Application哦。删掉Gradle的缓存文件夹
错误提示里提到了.gradle/caches下的文件,直接去/Users/sergio/.gradle/caches/这个路径把整个缓存文件夹删掉,然后重启Android Studio再重新构建。Gradle缓存有时候会莫名其妙损坏,删掉之后它会重新下载所有依赖,就能解决文件读不出来的问题。排查jackson依赖的冲突
错误里提到了jackson-databind,有可能是不同依赖里引入了不同版本的jackson,导致冲突。你可以在Terminal里执行./gradlew app:dependencies查看完整的依赖树,找到重复的jackson相关依赖,用exclude把多余的排除掉:// 举个例子,假设某个第三方依赖带了旧版jackson implementation('com.example:some-library:1.0.0') { exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind' }更新Gradle插件和SDK工具
过时的Gradle插件或者SDK Build Tools也可能导致这类兼容性问题。打开File > Project Structure > Project,把Gradle Plugin Version和Gradle Version更新到最新的稳定版,同时去SDK Manager里把Build Tools也更到最新的稳定版本。
内容的提问来源于stack exchange,提问作者Sergio Magoo Quintero

