メイン モジュールで Kotlin 拡張機能(KTX)API を使用するように移行する

Firebase が Kotlin への取り組みを拡大しているのに伴い、Google は Android エコシステムのモダナイゼーションを進めて、Firebase における Kotlin のアクセスしやすさおよび使いやすさを改善しています。

このモダナイゼーションを実現するために、Google は Android 向け Firebase 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 ファーストのエコシステムを実現いたします。このパッケージのモダナイゼーションには、次の利点があります。

  • 依存関係の管理の簡素化: 依存するモジュールが 1 つだけになったため、メイン モジュールと Kotlin 拡張機能を切り替えたり、両方に依存したりする必要がなくなりました。

  • Kotlin のサポートの強化: Android 用のすべての Firebase 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 月以降

Google は、KTX モジュールの新バージョンのリリースを停止し、KTX モジュールを Firebase BoM から削除します。

以前にリリースされたバージョンの KTX モジュールまたは BoM は引き続き機能しますが、メンテナンス終了となります。つまり、バグの修正、下位互換性のある変更、新機能がKTX モジュールに追加さえることはなくなります。代わりに、Android での Firebase の今後の開発はすべて、(Java と Kotlin のいずれの場合も)メイン モジュールで行われるようになります。

メイン モジュールから KTX API を使用するように移行する方法

Kotlin 拡張機能(KTX)API を使用している場合は、KTX モジュールではなくメイン モジュールから API を使用できるように、アプリで次の更新を行います。

  1. KTX モジュールではなくメイン モジュールを利用するように Gradle の依存関係を修正します。たとえば、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")
    }


  2. コードを更新して、すべての 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