在 Unity 上安装 Firebase 时出现错误“正在卸载损坏的程序集”

Posted

技术标签:

【中文标题】在 Unity 上安装 Firebase 时出现错误“正在卸载损坏的程序集”【英文标题】:When installing Firebase on Unity, I get an error "Unloading broken assembly" 【发布时间】:2019-04-30 08:25:51 【问题描述】:

我打算引入 Firebase,为我用 Unity 制作的游戏添加推送通知功能。

我将特定于应用程序的 google-services.json 粘贴到 Asset 文件夹中, 我安装了从here 下载的 SDK 的 FirebaseMessaging.unitypackage,但出现错误。


控制台

正在卸载损坏的程序集 Assets/Firebase/Plugins/Firebase.App.dll,此程序集可能会导致运行时崩溃


正在卸载损坏的程序集 Assets/Firebase/Plugins/Firebase.Messaging.dll,此程序集可能会导致运行时崩溃


正在卸载损坏的程序集 Assets/Firebase/Plugins/Firebase.Platform.dll,此程序集可能会导致运行时崩溃


从 Assets/google-services.json 生成 Firebase android 资源文件 google-services.xml 失败。 如果您的应用中没有包含有效的 Firebase Android 资源,它将无法初始化。 C:/UnityProjects/Test/Assets..\Assets\Firebase\Editor\generate_xml_from_google_services_json.exe -i "Assets/google-services.json" -l。 Microsoft.VC90.CRT.manifest 无法解压! 您可以通过执行“C:/UnityProjects/Test/Assets..\Assets\Firebase\Editor\generate_xml_from_google_services_json.exe -i "Assets/google-services.json" -l 来开始诊断此问题。”从命令行。 UnityEngine.Debug:LogError(对象) Firebase.Editor.GenerateXmlFromGoogleServicesJson:RunResourceGenerator(String, String, Boolean) (在 Z:/tmp/tmp.CeTbzghE2x/firebase/app/client/unity/editor/src/GenerateXmlFromGoogleServicesJson.cs:508) Firebase.Editor.GenerateXmlFromGoogleServicesJson:ReadBundleIds(String)(在 Z:/tmp/tmp.CeTbzghE2x/firebase/app/client/unity/editor/src/GenerateXmlFromGoogleServicesJson.cs:369) Firebase.Editor.GenerateXmlFromGoogleServicesJson:UpdateConfigFileDirectory()(在 Z:/tmp/tmp.CeTbzghE2x/firebase/app/client/unity/editor/src/GenerateXmlFromGoogleServicesJson.cs:261) Firebase.Editor.GenerateXmlFromGoogleServicesJson:CheckConfiguration()(在 Z:/tmp/tmp.CeTbzghE2x/firebase/app/client/unity/editor/src/GenerateXmlFromGoogleServicesJson.cs:223) Firebase.Editor.GenerateXmlFromGoogleServicesJson:.cctor()(在 Z:/tmp/tmp.CeTbzghE2x/firebase/app/client/unity/editor/src/GenerateXmlFromGoogleServicesJson.cs:83) UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes()


我想添加这个;

public void Start() 
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;

但由于错误,我在 OnTokenReceivedOnMessageReceived 部分出现错误。

使用 Firebase 为应用程序创建的 google-services.json 是否存在问题? 任何人请解决我。

【问题讨论】:

【参考方案1】:

检查您的项目设置 > ios。确保 .NET 是 4.X 而不是 3。 https://docs.unity3d.com/Manual/ScriptingRuntimeUpgrade.html

【讨论】:

链接坏了,用这个:docs.unity3d.com/2018.2/Documentation/Manual/…【参考方案2】:

我遇到了同样的错误,并从 Firebase 的 Github 中找到了答案。这是来自 Github 的帖子:

“卸载程序集”所做的只是从应用程序中卸载 DLL 域(即 Unity 的进程)然后禁用平台定位 选项。所以你需要做的是选择卸载的 DLL(s) 和 在插件检查器中勾选平台复选框以重新启用 它们适用于适当的平台。

我们通常遵循该模式来启用目标平台:

Firebase/*.dll:目标 Android、编辑器、独立 - 使用 FIrebase.Database.dll 的例外Firebase/Firebase.Database.dll : 仅限 Android Firebase/iOS/*.dll : 目标 iOS Firebase/Mono/Firebase.Database.dll:目标编辑器,独立

这里是链接:https://github.com/firebase/quickstart-unity/issues/256

希望对你有帮助。

【讨论】:

【参考方案3】:

我在一个新创建的项目中遇到了这个问题。该项目针对 Android,我正在加载程序集的 dotnet4 版本。我切换到 dotnet3 版本,它解决了这个问题。我注意到脚本运行时版本默认以 .NET 3.5 Equivalent 为目标。我是 Unity 的新手,所以我不确定这是否是问题所在。

【讨论】:

【参考方案4】:

每当 Firebase.Editor.GenerateXMLFromGoogleServicesJson.* 丢失时,都是因为 Unity 不会加载它,或者已被指示不加载。通过单击 Assets/Firebase/Editor/Firebase.Editor 进行检查,并确保“编辑器”复选框已打开。如果你改变了它,点击应用,关闭 Unity,重新打开它。这可能会引发一些错误,因为它会自行解决。关闭,重新打开它,一切都应该很好。绑定和解除绑定 dll 有一些复杂性,所以我总是在弄乱程序集依赖项后关闭 Unity。

【讨论】:

以上是关于在 Unity 上安装 Firebase 时出现错误“正在卸载损坏的程序集”的主要内容,如果未能解决你的问题,请参考以下文章

Unity集成Firebase Analytics打包apk,gradle 引入 google-services.json的坑

Unity集成Firebase Analytics打包apk,gradle 引入 google-services.json的坑

Unity集成Firebase Analytics打包apk,gradle 引入 google-services.json的坑

pod 安装时出现 Flutter 错误:CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本

当我尝试实现身份验证时出现 Firebase.app() 错误

尝试安装 Firebase 时出现安装错误