本頁提供提示和疑難排解方法,協助您解決使用 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檔案。
詳情請參閱多重 DEX 使用手冊。
為 Android 建構時發生的問題 (minSdkVersion 23)
建構 Android 應用程式時,如果指定 minSdkVersion 23,可能會在 DEX 處理步驟失敗,通常是在 Gradle 任務「:launcher:mergeExtDexDebug」中,系統會顯示「無法轉換」其中一個 Android 程式庫。這是因為大多數 Unity 編輯器使用的 Android SDK 預設 dex 工具存在錯誤,您可以透過以下幾種方式修正:
- 將
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 (建議的匯入方法)。