Android Studio更新后报错Program type already present: com.google.common.annotations.Beta求助
解决Android Studio更新后出现
Program type already present: com.google.common.annotations.Beta错误 嘿,这个问题我之前帮不少开发者解决过——本质就是依赖冲突闹的!你的项目里有多个依赖库都打包了com.google.common.annotations.Beta这个类,D8编译器合并字节码的时候发现重复定义,直接就报错了。下面给你几个靠谱的解决方法:
方案1:排查并排除重复依赖
首先得搞清楚到底是哪些库在重复引入这个类,用Gradle命令生成依赖树:
./gradlew app:dependencies
在输出结果里搜索com.google.common相关的条目,你会发现有多个依赖(比如第三方SDK、Google服务库)都自带了Guava(com.google.common.annotations.Beta属于Guava的类)。找到重复的来源后,在对应的依赖里排除掉Guava:
// 举个例子,如果是某个第三方库引入了重复的Guava implementation('com.example:some-third-party-lib:1.0.0') { exclude group: 'com.google.guava', module: 'guava' }
方案2:统一Guava依赖版本
如果排查后发现是不同版本的Guava被引入,最简单的办法是强制整个项目使用同一个稳定版本的Guava。在项目根目录的build.gradle里添加这段配置:
allprojects { repositories { // 保留你原来的仓库配置,比如google()、jcenter()等 } configurations.all { // 替换成你需要的Guava稳定版本,比如28.1-android是适配Android的版本 resolutionStrategy.force 'com.google.guava:guava:28.1-android' } }
方案3:清理项目缓存
有时候旧的编译缓存也会导致这类奇怪的依赖问题,试试这两步:
- 点击Android Studio工具栏的
File -> Invalidate Caches...,选择Invalidate and Restart,让AS彻底清理缓存并重启 - 手动删除项目根目录的
.gradle文件夹和app/build文件夹,然后重新同步项目(点击工具栏的Sync Project with Gradle Files)
如果你的项目里用到了Firebase、Google Play Services这类库,也要注意它们可能依赖了不同版本的Guava,同样可以用上面的方法处理。
内容的提问来源于stack exchange,提问作者Peter Barnes
相关产品推荐
相关产品推荐

