添加Unity Ads构建项目遇重复类错误,如何移除冗余保留包版本?
这个问题我之前碰到过好几次,核心原因就是你的项目里同时存在两套Unity Ads的实现——一套是通过Package Manager添加的官方版本,另一套是旧的本地依赖包或者第三方插件内置的版本,导致类名重复冲突。按下面的步骤一步步排查清理,就能只保留Package Manager的版本:
第一步:清理本地Plugins文件夹的旧依赖
打开Unity项目的Assets/Plugins/Android目录,仔细找有没有带UnityAds或unity-ads字样的.jar或.aar文件,比如unity-ads-x.x.x.jar、UnityAds.aar这类,找到后直接删除。这些是旧的手动集成方式留下的,和Package Manager的版本冲突了。第二步:检查并移除手动添加的Gradle依赖
如果之前你手动修改过项目的Gradle配置文件(比如Assets/Plugins/Android/mainTemplate.gradle或者baseProjectTemplate.gradle),找里面有没有类似这样的代码:implementation 'com.unity3d.ads:unity-ads:x.x.x'把这行依赖删掉,因为Package Manager的Unity Ads会自动帮你管理Gradle依赖,手动加的会导致重复。
第三步:清理Unity缓存并重建项目
- 点击Unity顶部菜单的
File > Build Settings,切换到Android平台,点击Clean Build按钮清理旧的构建缓存。 - 接着点击
File > Delete Library,删除Unity的Library文件夹(这个文件夹会自动重新生成,不用担心)。 - 重启Unity,等待项目重新加载完成后,再尝试构建。
- 点击Unity顶部菜单的
第四步:排查第三方插件的内置依赖
有些广告聚合插件(比如AdMob、IronSource这类)可能会内置Unity Ads的依赖,导致重复。你需要:- 打开这些插件的设置面板,看有没有“启用Unity Ads”或者“使用内置Unity Ads”的开关,把它关掉,让插件使用你通过Package Manager安装的版本。
- 如果插件没有相关开关,尝试更新插件到最新版本,新版本通常会适配Package Manager的依赖方式,避免冲突。
第五步:用Gradle依赖树定位隐藏的重复(进阶操作)
如果上面的步骤都没解决问题,你可以导出Android项目后,用Gradle的依赖树工具找到重复来源:- 在Unity里点击
File > Build Settings > Android > Export Project,导出完整的Android项目。 - 用Android Studio打开导出的项目,打开终端执行命令:
./gradlew dependencies - 在输出的依赖树里找
com.unity3d.ads:unity-ads的条目,看是哪个模块(比如某个第三方插件)引入了它,然后在对应的Gradle文件里添加排除规则:implementation('第三方插件的依赖') { exclude group: 'com.unity3d.ads' }
- 在Unity里点击
按照这些步骤操作后,应该就能彻底移除重复的Unity Ads实例,只保留Package Manager安装的版本,构建错误也会消失。
内容的提问来源于stack exchange,提问作者Mr. Tacio

