Android构建报错:Program type already present,附build.gradle配置
解决Android构建错误:Program type already present
这个错误我太熟悉了!基本都是依赖冲突搞的鬼——同一个Java类或者接口被多个依赖库重复包含,编译器懵了不知道该用哪个版本,就抛出这个报错了。结合你给出的build.gradle内容,我给你几个实用的排查和解决方向:
- 先排查本地jar包冲突:你配置了
compile fileTree(dir: 'libs', include: ['*.jar']),如果libs目录下的本地jar和你后续的远程implementation依赖包含了相同的类,就会触发冲突。可以先把libs里的jar暂时移到其他目录,重新执行构建试试,如果错误消失了,就说明是某个本地jar的问题,再逐个加回去定位具体是哪个。 - 分析远程依赖树找重复:哪怕你没贴全implementation的内容,远程依赖之间也很容易出现重复依赖的情况。你可以在终端执行这个命令查看完整的依赖树:
找到重复出现的依赖组/模块,然后用./gradlew app:dependenciesexclude语法移除多余的。比如如果是support库重复了,可以这么写:implementation 'com.example.somelibrary:xxx:1.0' { exclude group: 'com.android.support', module: 'support-v4' } - 统一依赖版本避免混乱:你的compileSdkVersion是27,对应的Android Support库(如果用到的话)最好统一用27.x.x的版本,别混用不同版本的support库,这是常见的冲突源头。
- 清理构建缓存试试:有时候旧的构建缓存也会导致奇怪的问题,先执行清理再重新构建:
./gradlew clean build
另外提个小建议:你的buildToolsVersion用的是25.0.3,和compileSdkVersion 27不匹配,建议把buildToolsVersion升级到27.x.x的版本(比如27.0.3),能避免不少兼容性问题。
内容的提问来源于stack exchange,提问作者user6549659
相关产品推荐
相关产品推荐

