VS Code调试含Firebase Analytics的Unity项目时遇Firebase.AppCheck加载错误
Unity VS Code调试时触发Firebase.AppCheck文件未找到错误(仅使用Analytics)
问题概述
项目仅集成Firebase Analytics,在Unity编辑器、iOS及Android设备上均可正常编译运行,但使用VS Code调试时,在Firebase初始化阶段抛出文件未找到异常,提示无法加载Firebase.AppCheck。本地不存在该文件,且不想安装Firebase AppCheck组件。
错误日志
Exception has occurred. System.IO.FileNotFoundException: Could not load the file 'Firebase.AppCheck'. File name: 'Firebase.AppCheck' at System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, System.Boolean refonly, System.Threading.StackCrawlMark& stackMark) [0x00033] in <79a1904c928a4c2d9eba5ede6e6aa92e>:0 at System.AppDomain.Load (System.String assemblyString) [0x00002] in <79a1904c928a4c2d9eba5ede6e6aa92e>:0 at (wrapper remoting-invoke-with-check) System.AppDomain.Load(string) at UnityEngine.ClassLibraryInitializer+<>c.<InitAssemblyRedirections>b__2_0 (System.Object _, System.ResolveEventArgs args) [0x0000e] in /Users/bokken/build/output/unity/unity/Runtime/Export/Scripting/ClassLibraryInitializer.cs:43
触发错误的代码
错误发生在Start方法的Firebase初始化调用处:
void Start() { Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { firebaseApp = Firebase.FirebaseApp.DefaultInstance; firebaseReady = true; MyDebug.Log("Firebase Analytics Ready"); } else { firebaseReady = false; MyDebug.Log($"Could not resolve all Firebase dependencies: {dependencyStatus}"); } }); }
环境版本
- Unity 2022.3.33f1
- Unity for VS Code 1.0.2
- VS Code 1.90.1
- Firebase Analytics 12.0.0
解决方案
1. 调整VS Code的程序集搜索路径
在项目根目录的.vscode/settings.json中添加Firebase程序集的搜索路径,确保Omnisharp能正确识别相关程序集:
{ "omnisharp.assemblySearchPaths": [ "Library/ScriptAssemblies", "Packages/com.google.firebase.analytics/Runtime", "Packages/com.google.firebase.core/Runtime" ], "omnisharp.useModernNet": false }
2. 添加程序集重定向配置
在项目的Assets/Plugins目录下创建app.config文件,添加对Firebase.AppCheck的重定向配置,避免调试时的加载错误:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Firebase.AppCheck" publicKeyToken="null" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="0.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
3. 清除缓存并重建解决方案
- 关闭VS Code和Unity,删除项目根目录下的
Library文件夹(建议先备份) - 重新打开Unity,等待项目重新生成所有程序集
- 打开VS Code,执行
Ctrl+Shift+P打开命令面板,选择Omnisharp: Restart Omnisharp,再选择Omnisharp: Clear Cache
4. 检查Firebase包的依赖设置
打开Unity Package Manager,找到Firebase Analytics,查看其依赖项。若发现强制依赖AppCheck,可尝试降级到不强制依赖AppCheck的Analytics版本(需确认版本兼容性)。
可能原因
Firebase Analytics 12.0.0版本在调试场景下可能隐式引入了AppCheck的程序集引用,但Unity打包时会通过代码裁剪移除未使用的依赖,导致调试环境与打包环境的依赖状态不一致,从而触发加载错误。
内容的提问来源于stack exchange,提问作者Fausto Bernardini
相关产品推荐
相关产品推荐

