Gradle构建成功但无法运行应用或打包APK问题咨询
解决Gradle构建中
transformClassesWithMultidexlistForDebug的重复类错误 这个错误的核心是项目中存在重复的依赖类,具体是support-core-ui-27.1.0.aar里的类被多次引入,导致Multidex打包时无法处理重复的zip条目。下面是几个逐步排查和解决的方法:
1. 先找出重复依赖的根源
在项目根目录的终端执行以下命令,查看所有依赖的树状结构,定位重复引入的support-core-ui或相关support库:
# Mac/Linux ./gradlew app:dependencies # Windows gradlew app:dependencies
在输出结果里搜索support-core-ui,看看是不是有不同版本的该库被多个依赖间接引入,或者同一个版本被重复引用。
2. 排除重复的依赖项
找到重复来源后,在app/build.gradle的依赖中给对应的库添加排除规则。比如如果是某第三方库间接引入了重复的support-core-ui,可以这样写:
implementation('com.example:some-third-party-lib:1.0.0') { exclude group: 'com.android.support', module: 'support-core-ui' }
如果是多个依赖都存在版本不一致的问题,也可以全局强制统一support库版本,在app/build.gradle的android块内添加:
configurations.all { resolutionStrategy { // 强制指定所有support-core-ui的版本为27.1.0 force 'com.android.support:support-core-ui:27.1.0' // 也可以统一所有support库版本,比如同时强制appcompat-v7等 // force 'com.android.support:appcompat-v7:27.1.0' } }
3. 清理Gradle缓存并重新构建
有时候Gradle缓存的旧文件会导致这类异常,执行以下命令彻底清理缓存并重新构建:
# Mac/Linux ./gradlew clean build --refresh-dependencies # Windows gradlew clean build --refresh-dependencies
这个命令会清除项目的构建文件,同时重新下载所有依赖,避免缓存损坏或重复文件干扰。
4. 检查Multidex配置是否正确
确保你的Multidex配置没有问题:
- 在
app/build.gradle的android.defaultConfig中开启Multidex:
android { defaultConfig { multiDexEnabled true } }
- 如果你的
minSdkVersion低于21,还需要添加Multidex依赖:
implementation 'com.android.support:multidex:1.0.3'
- 自定义Application类的话,要么继承
MultiDexApplication,要么在attachBaseContext方法中调用MultiDex.install(this)。
5. 检查本地库是否重复
如果项目中手动添加了本地aar/jar文件,检查这些文件里是否包含和support-core-ui重复的类,若有则移除重复的本地库或调整依赖结构。
内容的提问来源于stack exchange,提问作者Manish Khandelwal
相关产品推荐
相关产品推荐

