Android Studio 3.0.1编译报错:Program type already present问题修复咨询
解决「Program type already present: com.squareup.picasso.Action$RequestWeakReference」错误
嗨,这个问题我遇到过好几次了,是典型的依赖重复冲突问题——你的项目里重复引入了Picasso库,导致同一个类被多次打包,所以编译报错。具体原因是:你自己显式添加了com.squareup.picasso:picasso:2.5.2,但某个间接依赖(比如Firebase或Google Play Services相关的库)也偷偷包含了Picasso版本,两者冲突了。
下面是具体的修复步骤:
步骤1:确认重复依赖的来源
先在Android Studio的Terminal里执行这个命令,查看完整的依赖树:
./gradlew app:dependencies
执行后你能清晰看到哪个库间接引入了Picasso,确认冲突的源头。
步骤2:修改Gradle脚本解决冲突
有两种方案可选:
方案A:排除间接依赖中的Picasso
如果你想保留自己显式添加的Picasso版本,就在引入冲突的依赖里排除Picasso模块。比如假设是play-services带来的,就这么改:
compile('com.google.android.gms:play-services:11.8.0') { exclude group: 'com.squareup.picasso', module: 'picasso' }
方案B:移除自己显式添加的Picasso
如果间接依赖的Picasso版本和你的项目兼容,直接删掉这一行即可:
// 删掉这行 // compile 'com.squareup.picasso:picasso:2.5.2'
额外优化建议
- 别再引入整个
com.google.android.gms:play-services了!这会把所有Play Services模块都打包进来,不仅增大APK体积,还容易引发依赖冲突。应该只引入你实际需要的子模块,比如play-services-maps、play-services-location等。 - 保持Firebase和Google Play Services的版本一致(你现在都是11.8.0,这点做得很对,继续保持)。
内容的提问来源于stack exchange,提问作者Marcostox
相关产品推荐
相关产品推荐

