Unity构建Android游戏出现Duplicate class重复类报错如何解决
Android构建Unity Ads重复类报错修复方案
核心报错
构建Android平台游戏时触发构建失败,抛出类重复冲突错误:
Duplicate class com.unity3d.ads.BuildConfig found in modules com.unity3d.ads.unity-ads-4.2.1-runtime.jar (:UnityAds:) and com.unity3d.ads.unity-ads-4.2.1-runtime.jar (:com.unity3d.ads.unity-ads-4.2.1:)
控制台会批量输出同类型的com.unity3d.ads包下类重复报错,卸载重装Unity Ads插件无法解决该问题。
问题原因
报错本质是Unity Ads 4.2.1依赖被重复引入:两个模块名不同的依赖包中打包了完全一致的Unity Ads运行时代码,编译阶段出现类文件冲突。常见触发场景:
- 同时通过Unity Package Manager和本地Plugins目录两种方式导入了Unity Ads
- 接入的广告聚合SDK(如AdMob、AppLovin、IronSource等)内嵌了Unity Ads依赖,和手动/UPM安装的Unity Ads形成重复
修复步骤
按顺序执行以下操作即可解决冲突:
- 清理本地冗余插件
打开项目Assets/Plugins/Android目录,搜索所有名称包含unity-ads的.jar、.aar文件,删除手动放入的Unity Ads安装包,仅保留单一来源的依赖即可。 - 排除聚合SDK的传递依赖
如果项目接了广告聚合平台,找到Android依赖配置文件(通常是Assets/Plugins/Android/mainTemplate.gradle,或聚合插件自带的gradle配置项),在聚合SDK的依赖声明中排除内嵌的Unity Ads,示例配置:implementation('你的聚合SDK依赖坐标') { exclude group: 'com.unity3d.ads', module: 'unity-ads' } - 强制统一依赖版本(兜底)
若无法定位重复依赖来源,在mainTemplate.gradle的android配置块中添加全局强制解析规则,指定构建时仅使用单一版本的Unity Ads:android { // 保留原有其他配置 configurations.all { resolutionStrategy { force 'com.unity3d.ads:unity-ads:4.2.1' } } } - 清理缓存重构建
修改完配置后执行清理:关闭Unity编辑器,删除项目根目录下的Library、Temp缓存文件夹,重新打开项目等待导入完成后再发起构建。
内容的提问来源于stack exchange,提问作者Sven
相关产品推荐
相关产品推荐

