本页针对在使用 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 中引入了 Minification,它使用 Proguard(在某些版本的 Unity 中为其他工具)来删除未使用的代码,从而减少单个 dex 文件中引用的方法总数。可在 Player Settings > Android > Publishing Settings > Minify 中找到该选项。选项可能会因 Unity 版本而异,因此请参阅 Unity 官方文档。
如果引用的方法数量仍超过此限制,另一个选项是启用 multidex
。可通过以下几种方法在 Unity 中实现这一点:
- 如果启用了
Player Settings
下的Custom Gradle Template
,请修改mainTemplate.gradle
。 - 如果您使用 Android Studio 构建导出的项目,请修改模块级
build.gradle
文件。
如需了解详细信息,请参阅 MultiDex 用户指南。
使用 minSdkVersion 23 为 Android 构建应用时遇到的问题
为 Android 构建时,如果您以 minSdkVersion
23 为目标,则可能会在 dexing 步骤(通常在 Gradle 任务“':launcher:mergeExtDexDebug”中)失败,并显示“未能转换”其中一个 Android 库。这是因为大多数 Unity 编辑器使用的 Android SDK 中的默认 dex 工具存在 bug,可以通过以下几种不同的方式进行修复:
- 将
minSdkVersion
设置为 24。 - 在 Player Settings(玩家设置)> Android > Publishing Settings(发布设置)> Minify(缩减大小)中启用 Android 缩减。
- 通过将以下内容添加到
settingsTemplate.gradle
文件来指定不同的 dex 工具版本:
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 版本的过程取决于其最初导入的方式。有两种可互相替代的导入方法:
- 导入项目
Assets/
目录下的.unitypackage
文件 - 使用 Unity Package Manager (UPM) 导入
- 这是在 Unity 2018.4 及更高版本中管理软件包的推荐方法。
- 使用此方法可以简化未来的版本更新,并使您的
Assets/
目录更清晰。
在 Unity 项目中,您应仅使用一种导入方法来管理所有 Firebase 软件包。以下说明不仅可以用于更新各个软件包的版本,还可用于视需要改为使用 UPM(推荐的导入方法)进行软件包管理。