在 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;
但由于错误,我在 OnTokenReceived 和 OnMessageReceived 部分出现错误。
使用 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
: 仅限 AndroidFirebase/iOS/*.dll
: 目标 iOSFirebase/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”的兼容版本