Android Studio报Program type already present构建错误求解
报错根因
这个错误是Android Support库版本冲突导致的,你通过IDE新建Basic Activity时,系统会自动在app模块的build.gradle中新增对应版本的constraint-layout、support-design依赖,和你项目中原有的旧版本support库出现了重复引入,哪怕你手动删除了布局里的ConstraintLayout,依赖配置依然存在,所以构建失败。
可直接落地的解决步骤
- 第一步:打开app模块下的
build.gradle文件,定位到dependencies代码块,删除IDE自动新增的constraint-layout、support-design依赖条目,这两个是你新建Activity时自动插入的,你项目里原本不需要。 - 第二步:如果删除后依然报错,执行依赖冲突排查:在Android Studio的Terminal面板执行命令:
- Mac/Linux系统:
./gradlew app:dependencies - Windows系统:
gradlew.bat app:dependencies
命令会输出完整的依赖树,搜索com.android.support:design关键词,就能看到哪个第三方依赖自带了不同版本的design包。
- Mac/Linux系统:
- 第三步:强制统一Support库版本,在app模块
build.gradle文件的android代码块之外添加如下配置,把版本号替换为你项目当前正在使用的Support库版本即可:configurations.all { resolutionStrategy { // 强制所有依赖使用指定版本的Support库,避免版本冲突 force 'com.android.support:design:你的项目support库版本号' force 'com.android.support:support-v4:你的项目support库版本号' force 'com.android.support:appcompat-v7:你的项目support库版本号' } } - 第四步:依次点击顶部菜单栏
Build -> Clean Project、Build -> Rebuild Project,等待构建完成即可。
Gradle学习建议
你有Makefile基础的话,理解Gradle会非常快,二者核心逻辑一致,都是定义构建任务、任务依赖关系、输入输出规则。日常Android开发不需要掌握太复杂的Gradle用法,按优先级学习即可:
- 先理解Android项目两个层级
build.gradle的作用:根目录build.gradle负责全局的仓库配置、插件版本配置;模块级build.gradle负责对应模块的编译版本、依赖、签名、构建变体配置 - 再学习依赖配置的规则:
implementation、api、compileOnly等配置的区别,依赖传递的逻辑 - 最后如果有自定义构建需求,再学习自定义Task、插件开发的相关内容
内容的提问来源于stack exchange,提问作者nmw01223
相关产品推荐
相关产品推荐

