Unity独立构建版无法找到Firebase DLL,编辑器环境运行正常
Unity打包Win独立版本加载Firebase原生Dll失败解决方案
核心错误定位:日志中反复抛出
Fallback handler could not load library及最终DllNotFoundException: FirebaseCppApp-7_1_0,本质是Firebase附带的Windows平台原生C++ DLL未被Unity构建流程纳入输出包体,编辑器环境下可直接通过包路径加载Dll,因此不会触发该错误。
可落地排查修复步骤
- 步骤1:修正Firebase原生Dll的平台导入设置
- 在项目资源面板定位路径
Packages/Firebase/App/Plugins/x86_64/下的FirebaseCppApp-7_1_0.dll - 选中Dll后在Inspector面板调整配置:
- 取消Any Platform全局勾选
- 仅勾选Windows目标平台,架构选择x86_64
- 确保Include In Build选项为勾选状态(Firebase 7.1.0版本该选项默认未勾选,是触发该问题的最高概率原因)
- 取消Editor平台外的其他无关架构勾选,避免Unity自动过滤不匹配的Dll
- 注意:重新安装包管理器的Firebase依赖时,Unity会自动复用项目缓存的插件导入配置,因此仅靠重装包不会修正该默认错误配置。
- 在项目资源面板定位路径
- 步骤2:匹配项目构建目标架构
- 打开
Edit > Project Settings > Player面板 - 确认Scripting Backend对应的架构选项为x86_64,若构建目标为x86架构,x86_64编译的Firebase Dll会被Unity自动排除
- 检查是否存在自定义构建后处理脚本,错误过滤了
_Data/Plugins目录下的Firebase前缀文件
- 打开
- 步骤3:验证构建输出文件完整性
- 完成全量打包后,打开输出目录下的
typist_Data/Plugins/x86_64/文件夹 - 确认
FirebaseCppApp-7_1_0.dll已被拷贝到该目录;若文件缺失,临时手动将对应Dll拷贝到该路径,启动程序验证加载是否正常
- 完成全量打包后,打开输出目录下的
- 步骤4:Mono后端补全Dll搜索路径
- 从日志可见当前项目使用MonoBleedingEdge脚本后端,Mono默认优先从
_Data/Mono目录查找原生库,可在项目启动最早期添加路径加载逻辑:
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static void RegisterFirebaseDllSearchPath() { string firebasePluginDir = Path.Combine(Application.dataPath, "Plugins", "x86_64"); if (Directory.Exists(firebasePluginDir)) { Win32Interop.SetDllDirectory(firebasePluginDir); } } internal static class Win32Interop { [System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)] internal static extern bool SetDllDirectory(string lpPathName); }- 若项目切换为IL2CPP脚本后端,无需添加上述逻辑,IL2CPP构建管线会自动将原生Dll放置到程序可搜索的根路径下
- 从日志可见当前项目使用MonoBleedingEdge脚本后端,Mono默认优先从
- 步骤5:清除旧缓存重新构建
- 删除项目目录下的
Library、Temp、Obj缓存文件夹 - 重新通过Unity包管理器安装对应版本Firebase依赖,确保导入配置被重置
- 执行非增量的全量构建
- 删除项目目录下的
内容的提问来源于stack exchange,提问作者Jayden
相关产品推荐
相关产品推荐

