【发布时间】:2019-12-23 00:12:09
【问题描述】:
问题
我正在尝试将 Firebase Google Analytics 集成到我现有的 Unity 项目(适用于 iOS 和 Android 的手机游戏)中。我按照https://firebase.google.com/docs/unity/setup 上的说明进行操作(所有先决条件均已满足)。不幸的是,当尝试在 Windows 上构建 Android 版本时,我收到以下错误:
BadImageFormatException: Could not resolve field token 0x040000dc, due to: Could not load type of field 'Firebase.Editor.XcodeProjectModifier:projectInfoDoc' (2) due to: Could not load file or assembly 'UnityEditor.iOS.Extensions.Xcode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. assembly:UnityEditor.iOS.Extensions.Xcode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null type:<unknown type> member:(null) signature:<none> assembly:C:\Users\mform\Code\guessme\Assets\Firebase\Editor\Firebase.Editor.dll type:XcodeProjectModifier member:(null) signature:<none>
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <567df3e0919241ba98db88bec4c6696f>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <567df3e0919241ba98db88bec4c6696f>:0)
UnityEditor.Build.BuildPipelineInterfaces+AttributeCallbackWrapper.OnPostprocessBuild (UnityEditor.Build.Reporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:158)
UnityEditor.Build.BuildPipelineInterfaces+<OnBuildPostProcess>c__AnonStorey2.<>m__1 (UnityEditor.Build.IPostprocessBuildWithReport bpp) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:398)
UnityEditor.Build.BuildPipelineInterfaces.InvokeCallbackInterfacesPair[T1,T2] (System.Collections.Generic.List`1[T] oneInterfaces, System.Action`1[T] invocationOne, System.Collections.Generic.List`1[T] twoInterfaces, System.Action`1[T] invocationTwo, System.Boolean exitOnFailure) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:356)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179)
Error building Player: BadImageFormatException: Could not resolve field token 0x040000dc, due to: Could not load type of field 'Firebase.Editor.XcodeProjectModifier:projectInfoDoc' (2) due to: Could not load file or assembly 'UnityEditor.iOS.Extensions.Xcode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. assembly:UnityEditor.iOS.Extensions.Xcode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null type:<unknown type> member:(null) signature:<none> assembly:C:\Users\mform\Code\guessme\Assets\Firebase\Editor\Firebase.Editor.dll type:XcodeProjectModifier member:(null) signature:<none>
我不明白为什么它会尝试加载这个程序集,这显然只适用于 iOS。而且我不知道如何预防或摆脱这个错误。
设置
- Windows 10 专业版
- 现有 Unity 项目以及 Android/iOS 版本
- 团结2019.2.16f1
- 使用 Unity 打包的 OpenJDK 和 Android SDK/NDK
- OpenJDK 1.8
- Android SDK 工具 29.0.2
- 当前依赖项(全部按预期工作)
- 我按照https://firebase.google.com/docs/unity/setup 中的说明添加了 Google Analytics
- 我已完成所有步骤
- 在编辑器中执行时,会调用 CheckAndFixDependenciesAsync 延续,并且 Firebase 依赖状态为“可用”
构建设置
播放器设置
解决方案尝试
- 我通过 Git 重置所有更改并从头开始重新执行这些步骤,重新导入 SDK 统一包
- 使用 Play 服务解析器
- 我更新了版本处理程序
- 我强制解决了 Android 依赖项(有效)
- 删除库文件夹并重建
不幸的是,这些都没有帮助。我将非常感谢任何指向正确方向的指针。
【问题讨论】:
-
切换到 iOS 平台,构建,然后切换回 Android 平台并再次构建。
-
非常感谢@Cœur!我在 Windows 上构建,甚至没有启用 iOS 支持。安装 Unity iOS 模块后,Android 构建工作正常!问题解决了。 ??????
标签: android firebase unity3d google-analytics google-analytics-firebase