簡體   English   中英

Unity 和 Firebase Database 7.0.2: Fallback handler could not load library

[英]Unity and Firebase Database 7.0.2 : Fallback handler could not load library

我剛剛在我的項目中集成了 Firebase Auth,效果很好。 數據庫是在 Firebase 門戶網站上創建的。

集成 Firebase 數據庫后(由於某些不明原因未在 Unity Package 管理器中顯示),當調用database = FirebaseDatabase.DefaultInstance; 開始時,編輯器凍結。

我檢查了以我在下面復制粘貼的內容結尾的編輯器日志。 我在這里看到了一些關於 firebase 6.10 的問題的帖子,但我在這里使用的是 7.0.2。 想知道大家有沒有什么想法?

編輯日志:

后備處理程序無法加載庫/Applications/Unity/Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle 后備處理程序無法加載庫/Applications/Unity/Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle.dylib 后備處理程序無法加載庫/Applications/Unity /Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle.so 回退處理程序無法加載庫/Applications/Unity/Hub/Editor /2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle 加載場景'Temp/__Backupscenes/0.backup'

編輯#1:首先感謝你們的冗長回答。 我將嘗試在項目中重新導入捆綁文件並向您報告。 我應該注意到,編輯器日志中列出的路徑實際上並不存在於我的 Unity.app package 內容中。 它找到了內容和框架,但是 Mono 不存在......在將 CakeCommander 的注冊表添加到我的 Packages/Manifest.json 之后,我終於設法擁有 package 管理器的 Google LLC 部分,並從那里重新導入實時數據庫和 Auth,所以這很好。 我還應該注意到,現在所有 SDK 的文件夾都存在於 Packages 文件夾中,而 Assets 中不再有任何內容。 我暫時沒有使用任何版本控制。

永久掛起時的編輯器日志

您可能需要將 Google 游戲 package 注冊表添加到您的 Packages/Manifest.json 文件您的 Unity 項目中。

這應該看起來像:

{
  "scopedRegistries": [
    {
      "name": "Game Package Registry by Google",
      "url": "https://unityregistry-pa.googleapis.com",
      "scopes": [
        "com.google"
      ]
    }
  ],
  "dependencies": {
    ...
  }
}

您需要重新啟動 Unity,它才能識別此更改。

我建議通過 package 管理器重新導入,以防可能出現配置錯誤。

我將從您發布的這看起來像是一個編輯器唯一的問題開始(如果它發生在您的設備上,我不會感到驚訝)。 為了分解這個特定的日志,Firebase Unity SDK 由三部分組成:

  1. 可以從典型的 Unity 代碼中使用的 C# Unity 庫
  2. 面向游戲開發者的跨平台 C++ 層
  3. 一個原生 iOS/Android 層,用於連接到每個操作系統 - 或 - Windows、Linux 和 MacOS 的這些原生層的 C++ 實現。

看起來缺少第 3 層,至少在桌面上是這樣。 缺少的文件是.bundle文件,它們基本上是 macOS 的共享庫。 因此,可能會發生以下三件事之一:

  1. MacOS Catalina(和更新版本)對可以運行和不能運行的內容有非常嚴格的保護。 您可能需要明確允許 MacOS 的.bundle文件,以便 Unity 編輯器與 Firebase 庫連接。 我已經錄制了一個關於這個的視頻,但一般的要點是你需要重新安裝 Firebase 插件,運行 Unity(你應該得到一個安全彈出窗口),關閉彈出窗口而不刪除任何內容,然后允許 Firebase 在你的計算機的安全設置。

  2. 您已從項目中排除了 .bundle 文件。 在導入 SDK 或將項目添加到源代碼控制時(有時這些被排除在“構建工件”之外)。 為了在 Mac 上的編輯器中測試 Firebase,您需要包含 this.bundle 文件。 這可能就像重新導入FirebaseDatabase.unitypackage並確保包含FirebaseCppDatabase.bundle和相關的.bundle文件一樣簡單:

在“導入 Unity 包”窗口中突出顯示 FirebaseCppDatabase.bundle 的圖像

請注意,如果您確實從源代碼管理中克隆了您的項目,您將需要找到您的排除規則並確保提交捆綁文件。

  1. 相關的.bundle文件可能未與編輯器構建目標關聯。 這通常發生在人們正在調整構建系統(例如:嘗試使用.asmdef文件)或對在提交中包含.meta文件感到害羞的時候。 如果您想使用 Unity 剝離游戲的 macOS 本機構建,您需要確保.bundle文件包含在“編輯器”構建中以在編輯器和“獨立”中運行:

在 Unity Inspector 中打開 FirebaseCppDatabase.bundle 的屏幕截圖。在“為插件選擇平台”下,選中編輯器和獨立

請注意,@CakeCommander 的建議也可以解決您的問題。 PackageManager 將 Firebase SDK 安裝在Assets/目錄旁邊而不是內部,Unity 將知道如何在需要時在每台機器上獲取它。 任何開發人員或版本控制軟件都不太可能破壞安裝。 我會注意到 Unity 的外部依賴管理器用於自動將包遷移到 package 管理器,但現在不再 - 所以我可能會等待重新實現該功能,然后再直接與 package 注冊表混淆,但這也可能是您最簡單的路徑向前。

出於我們問題的原因:我們在 SDK 初始化之前過早地使用了 Firebase SDK。

例如:在 Firebase 解析 SDK 還沒有啟動時,在啟動畫面發送 Firebase 事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM