Firebase 正在加大对 Kotlin 的投入,并且我们正在努力实现 Android 生态系统的现代化改造,使 Kotlin 在 Firebase 中更易于访问和使用。
为实现这一现代化改造,我们对 Firebase Android SDK 进行了一些更改。本页面介绍了有关此更改的重要信息,包括:
具体变化
Kotlin 扩展 (KTX) API 已添加到其各自的主模块中。例如,firebase-perf-ktx
中的所有 API 均已添加到 com.google.firebase.perf
包下的 firebase-perf
中。
这项更改意味着,Kotlin 开发者现在可以依赖于主模块,而不是 KTX 模块(使用 Firebase BoM v32.5.0+ 或 BoM v32.5.0+ 中列出的主模块版本时)。
作为此更改的一部分,每个 KTX 模块中的 Kotlin 扩展 (KTX) API 现已弃用。最早从 2024 年 9 月开始,我们将不再发布 KTX 模块,届时我们还将从 Firebase Android BoM 中移除 KTX 库。
为什么要进行此变更?
Firebase 致力于为 Android 开发者打造 Kotlin-first 的生态系统。这种封装现代化改造具有以下优势:
简化了依赖项管理:现在您只需依赖于单个模块,而无需在主模块和 Kotlin 扩展之间切换,也无需同时依赖于两者。
增强了 Kotlin 支持:所有 Firebase Android SDK 现在都可以为 Kotlin 提供更好的支持。我们将直接在主模块中添加所有适用于 Kotlin 的新功能。
此更改的重要日期
2023 年 10 月
Kotlin 扩展程序 (KTX) API 已添加到其各自的主模块,这意味着,在使用 Firebase BoM v32.5.0+ 或 BoM v32.5.0+ 中列出的主模块版本时,您现在可以直接从主模块使用 KTX API。
同时,KTX 模块中的 Kotlin 扩展程序 (KTX) API 已弃用(请参阅说明这项变更的版本说明)。在弃用阶段,KTX 模块中弃用的 API 将继续正常运行和维护。
最早 2024 年 9 月
我们将停止发布 KTX 模块的新版本,并从 Firebase BoM 中移除 KTX 模块。
之前发布的任何 KTX 模块或 BoM 版本都将继续正常运行,但将进入维护终止阶段。这意味着我们将停止向 KTX 模块添加问题修复、向后兼容的更改和新功能。针对 Android 上的 Firebase 的所有未来开发都将在主模块(对于 Java 和 Kotlin)中完成。
如何迁移以使用主模块中的 KTX API
如果您使用 Kotlin 扩展程序 (KTX) API,请在您的应用中进行以下更新,以便开始使用主模块(而不是 KTX 模块)中的 API。
修改 Gradle 依赖项,以依赖于主模块,而不是 KTX 模块。例如,如果您使用 Firebase Android BoM(推荐):
BEFORE
dependencies { // ... // Import the Firebase BoM implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // Using KTX libraries for Authentication and Cloud Firestore implementation("com.google.firebase:firebase-auth-ktx") implementation("com.google.firebase:firebase-firestore-ktx") }
AFTER
dependencies { // ... // Import the Firebase BoM as usual // Make sure to use Firebase BoM v32.5.0 or higher implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // No need to use the KTX libraries, everything is now in the main module implementation("com.google.firebase:firebase-auth") implementation("com.google.firebase:firebase-firestore") }
更新您的代码,将出现的所有 KTX API 替换为
com.google.firebase
包下的主模块中重新定位的 API。BEFORE
import com.google.firebase.auth.ktx.auth import com.google.firebase.firestore.ktx.firestore import com.google.firebase.firestore.ktx.toObject import com.google.firebase.ktx.Firebase
AFTER
import com.google.firebase.auth.auth import com.google.firebase.firestore.firestore import com.google.firebase.firestore.toObject import com.google.firebase.Firebase