升级Android Studio 3.1后构建报错:Program type already present求助
Program type already present冲突问题 我之前也碰到过几乎一模一样的问题!给你几个亲测有效的排查和解决方向,你可以挨个尝试:
精准定位重复依赖来源
先执行依赖分析命令,找出到底是哪些库在重复引入v4包。在终端里运行:# Mac/Linux环境 ./gradlew app:dependencies # Windows环境 gradlew.bat app:dependencies搜索输出内容里的
android.support.v4,重点关注不同版本的v4包被哪些第三方库引入,或者是否存在同一库被多次引入的情况。强制统一Support库版本
大部分冲突都是因为不同依赖使用了不同版本的Support库,在项目根目录的build.gradle中添加以下配置,强制所有依赖使用同一版本的Support库(把版本号替换成你项目正在使用的):subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex')) { details.useVersion '27.1.1' // 替换为你的项目Support版本号 } } } }排除重复的直接依赖
检查你的app/build.gradle:如果已经引入了appcompat-v7,就不需要再单独引入support-v4了(因为appcompat-v7已经包含v4的核心内容),直接删掉单独的support-v4依赖声明。如果是第三方库自带了v4包,也可以在依赖里手动排除:implementation('com.example.thirdparty:library:1.0.0') { exclude group: 'com.android.support', module: 'support-v4' }彻底清理缓存与重建
既然只有你的设备出现问题,除了清理Android Studio缓存(File -> Invalidate Caches / Restart),还要:- 卸载设备上的应用,手动清除该应用的残留数据
- 执行
Build -> Clean Project,再执行Build -> Rebuild Project,不要直接使用Make Project功能
禁用Instant Run
Android Studio 3.1的Instant Run有时候会残留旧的构建缓存,导致奇怪的类重复问题。你可以在File -> Settings -> Build, Execution, Deployment -> Instant Run里,取消勾选Enable Instant Run to hot swap code/resource changes on deploy,然后重启AS再重新构建。
这个报错的核心就是同一类被多次打包进DEX文件,只要找到重复的来源,统一版本或者排除重复就能解决。
内容的提问来源于stack exchange,提问作者Nathua

