Android应用集成Google广告横幅时出现重复条目编译错误
解决Android Jar Merging重复条目错误
这问题我之前集成广告的时候也踩过坑,核心原因就是重复依赖导致的类冲突——你同时做了两件事:一是通过fileTree导入了libs目录下的Google services本地JAR,二是在gradle里添加了com.google.android.gms:play-services-ads:15.0.1的远程依赖。这两个包里包含了大量相同的类文件,打包时Gradle不知道该用哪一个,就抛出了transformClassesWithJarMergingForDebug错误。
下面是具体的解决步骤:
- 删掉libs里的Google services JAR文件:既然已经通过远程依赖引入了广告服务,本地的JAR完全是多余的,直接删除这个文件就能消除重复的类来源。
- 清理并重新构建项目:
- 打开Android Studio,点击顶部菜单栏的
Build->Clean Project,清空旧的构建缓存 - 接着点击
Build->Rebuild Project,重新编译整个项目
- 打开Android Studio,点击顶部菜单栏的
- (可选)排查隐式重复依赖:如果上面两步还没解决问题,可以通过命令查看项目的依赖树,找出隐藏的重复依赖:
- Mac/Linux终端执行:
./gradlew app:dependencies - Windows命令行执行:
gradlew.bat app:dependencies
找到重复的Google services模块后,用exclude关键字在依赖声明里排除,比如:
不过绝大多数情况下,前两步就足够解决你的问题了。implementation 'com.google.android.gms:play-services-ads:15.0.1' { exclude group: 'com.google.android.gms', module: 'play-services-base' } - Mac/Linux终端执行:
另外提醒一句:Google官方推荐使用远程依赖而非本地JAR,因为远程依赖会自动处理版本兼容性,后续更新也更方便,以后尽量避免同时引入同功能的本地JAR和远程依赖。
内容的提问来源于stack exchange,提问作者Motie Khyaoui
相关产品推荐
相关产品推荐

