本頁面提供使用 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
檔案。
詳情請參閱多重 Apk 使用者指南。
針對 Android 建構時,使用 minSdkVersion 23 發生的問題
為 Android 建構時,如果指定 minSdkVersion
23,則在 DEX 處理程序階段 (通常是 Gradle 工作 ':launcher:mergeExtDexDebug') 中可能會失敗,並顯示「Failed to transform」其中一個 Android 程式庫。這是因為大多數 Unity 編輯器使用的 Android SDK 中,預設的 dex 工具有錯誤,可以透過幾種不同的方式修正:
- 將
minSdkVersion
設為 24。 - 開啟 Android 縮減功能,請依序前往「Player Settings」>「Android」>「Publishing Settings」>「Minify」
- 如要指定不同的 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 (建議的匯入方法)。