Unity项目导入Firebase包时出现重复预编译程序集错误求助
解决Unity导入Firebase时的同名预编译程序集冲突问题
问题背景
导入Firebase包时触发编译错误:不允许存在同名的重复预编译程序集,涉及google.version.dll文件,分别位于Assets/MobileDependencyResolver/Editor和Assets/ExternalDependencyResolver/Editor目录下。冲突源于Firebase自带的External Dependency Resolver与项目中已有的移动端依赖解析器重复打包了相同核心dll,直接重命名、删除或排除文件会破坏Firebase的依赖链,引发新的编译错误。
可行解决方案
1. 彻底清理旧依赖解析器
- 手动删除项目中
Assets/MobileDependencyResolver整个文件夹,确保无残留的dll、asmdef或配置文件。 - 若该依赖解析器是通过Unity Package Manager安装的,打开
Window > Package Manager,找到对应包(可能命名为com.google.mobile-dependency-resolver类),点击Remove完成卸载。
2. 重新导入Firebase SDK
- 使用Firebase官方Unity SDK下载器做自定义安装,只勾选实际需要的Firebase模块(如Analytics、Auth等),不手动勾选额外的依赖解析器组件,让安装程序自动处理依赖,确保仅保留官方的External Dependency Resolver。
3. 统一依赖版本(Package Manager方式)
- 打开项目根目录下的
Packages/manifest.json,在dependencies节点中添加官方External Dependency Resolver的指定版本引用,示例:{ "dependencies": { "com.google.external-dependency-manager": "1.2.177", // 保留项目原有其他依赖项 } } - 返回Unity编辑器,打开Package Manager,点击左上角
Refresh按钮,让Unity自动下载并替换为指定版本的依赖解析器,覆盖冲突文件。
4. 修复Assembly Definition配置
- 若仍有冲突,找到两个dll对应的
.asmdef文件(若存在),打开非Firebase依赖的那个配置,取消勾选Auto Referenced选项,仅让Firebase关联的External Dependency Resolver的asmdef保持自动引用状态。
关于仅你遇到该问题的原因
这种情况通常是因为项目之前引入了其他第三方SDK(如广告、统计类SDK),这些SDK手动导入了Mobile Dependency Resolver,而你未通过Package Manager统一管理依赖,导致与Firebase自带的解析器版本冲突。多数开发者会优先用Package Manager管理第三方依赖,因此较少出现这类手动导入的重复文件问题。
内容的提问来源于stack exchange,提问作者Angel Dev
相关产品推荐
相关产品推荐

