本頁面提供提示和疑難排解資訊,協助您解決使用 Firebase 時可能遇到的 Unity 專屬問題。
遇到其他問題,或找不到下方列出的問題嗎?如要查看更多 Firebase 或產品專屬的常見問題,請務必參閱主要 Firebase 常見問題。
建構 Android 應用程式時發生單一 Dex 問題
建構 Android 應用程式時,您可能會遇到與單一 DEX 檔案相關的建構失敗問題。如果專案設定為使用 Gradle 建構系統,錯誤訊息應如下所示:
Cannot fit requested classes in a single dex file.
Dalvik Executable (.dex
) 檔案用於保存一組類別定義,以及 Android 應用程式 (.apk
) 的相關輔助資料。單一 DEX 檔案最多只能參照 65,536 個方法。如果專案中所有 Android 程式庫的方法總數超過這個上限,建構作業就會失敗。
Unity 在 2017.2 版中導入了縮減功能,可使用 Proguard (或某些 Unity 版本中的其他工具) 移除未使用的程式碼,減少單一 DEX 檔案中參照的方法總數。您可以在「Player Settings」>「Android」>「Publishing Settings」>「Minify」找到這個選項。不同 Unity 版本提供的選項可能有所不同,因此請參閱 Unity 官方文件。
如果參照的方法數量仍超出上限,另一個選項是啟用 multidex
。在 Unity 中,有多種方法可以達成這個目標:
- 如果已啟用
Player Settings
下方的Custom Gradle Template
,請修改mainTemplate.gradle
。 - 如果您使用 Android Studio 建構匯出的專案,請修改模組層級的
build.gradle
檔案。
詳情請參閱多重索引使用者指南。
使用 minSdkVersion 23 建構 Android 應用程式時發生問題
為 Android 建構時,如果目標為 minSdkVersion
23,可能會在 DEX 處理步驟失敗,通常是在 Gradle 任務「:launcher:mergeExtDexDebug」中,並顯示「Failed to transform」其中一個 Android 程式庫。這是因為 Android SDK 中預設的 dex 工具存在錯誤 (大多數 Unity 編輯器都會使用這個工具),您可以透過幾種方式修正這個問題:
- 將
minSdkVersion
設為 24。 - 在「Player Settings」>「Android」>「Publishing Settings」>「Minify」中,開啟 Android 縮減功能
- 如要指定其他版本的 dex 工具,請在
settingsTemplate.gradle
檔案中加入以下內容:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
使用 Cocoapods 建構 iOS 專案時發生問題
為 iOS 建構時,Cocoapod 安裝作業可能會失敗,並顯示語言地區設定或 UTF-8 編碼相關錯誤。目前有幾種不同的方法可以解決這個問題。
從終端機直接執行
pod install
,然後開啟產生的 xcworkspace 檔案。將 Cocoapods 版本降級至 1.10.2。這個問題只會出現在 1.11 以上版本。
在
~/.bash_profile
或等效項目中,新增export LANG=en_US.UTF-8
如何更新 Firebase Unity SDK 版本
更新 Firebase Unity SDK 版本的方法,取決於您最初匯入 SDK 的方式。以下提供兩種替代匯入方式:
- 匯入專案
Assets/
目錄下的.unitypackage
檔案 - 使用 Unity Package Manager (UPM) 匯入
- 建議您使用這種方式,在 Unity 2018.4 以上版本中管理套件。
- 使用這個方法可簡化日後的版本更新作業,並讓
Assets/
目錄更乾淨。
在 Unity 專案中,您應只使用一種匯入方法來管理所有 Firebase 套件。您可以使用下列操作說明更新個別套件的版本,也可以視需要將套件管理作業遷移至 UPM (建議使用的匯入方法)。
以 .unitypackage
檔案形式匯入 Assets/
目錄的套件
如果 Firebase 套件位於 Assets/
目錄中,您可以透過下列兩種方式更新 SDK 版本:
選項 1 (建議):遷移至使用 UPM (適用於 Unity 2018.4 以上版本)
- 按照 Firebase 提供的操作說明,將套件管理遷移至 UPM。
- 雖然這個方法比繼續使用
.unitypackage
工作流程需要更多初始設定,但後續更新 SDK 版本時會更加輕鬆。
方法 2:繼續使用
.unitypackage
檔案,將其匯入Assets/
目錄匯入更新版本的每個套件。
如果您從 Firebase 網站下載 firebase_unity_sdk.zip,請務必從正確的
dotnet
資料夾匯入所有.unitypackages
。- 如果使用 Unity 2019 以上版本,請從
dotnet4
資料夾匯入。 - 否則,請在「Player Settings」中選取「Scripting Runtime Version」,
如果設為「.NET 3.x」,請從
dotnet3
資料夾匯入。
- 如果使用 Unity 2019 以上版本,請從
先前匯入的套件版本應由外部依附元件管理工具自動覆寫 (匯入 Firebase
.unitypackages
時,系統會自動納入這項工具)。不過,如果自動程序失敗 (僅限這種情況),您需要手動刪除下列資料夾,然後再次嘗試上述匯入步驟。
Assets/Editor Default Resources/Firebase
Assets/ExternalDependencyManager
Assets/Firebase
Assets/Parse
Assets/Plugins/iOS/Firebase
由 UPM 管理的套件
如果 Firebase 套件是由 UPM 管理,請以 .tgz
形式匯入新版 SDK。匯入作業會自動覆寫先前版本。