以下のようなメールを最近Google Play Storeから受信したことがあります:

Play Core Mavenの依存をAndroid 14と互換性のあるバージョンに更新してください! 現在のPlay Coreライブラリは、ユーザーセキュリティを改善するためにブロードキャストレシーバーに向けて後方互換性を持たない変更を導入するtargetSdkVersion 34 (Android 14)と互換性がないです。ご記念に、8月31日からGoogle Playは新規アプリリリース時にAndroid 14を対象にすることを要求します。アプリクラッシュを避けるために、最新のPlay Coreライブラリのバージョン依存性を更新してください: https://developer.android.com/guide/playcore#playcore-migration

このSDKバージョンで、将来的なアプリの新しいバージョンを本番環境または公開テストにリリースすることができない可能性があります。

恐ろしいように聞こえますよね?

心配しないでください。実はそれほど厄介ではありません。

変更の本質はどういうことか

基本的に、Googleは2022年の初めにPlay Coreライブラリの新しいバージョンのリリースを停止しました。


最後にリリースされたPlay Coreライブラリのバージョン

そして2022年4月から、彼らは元のPlay Coreライブラリを4つの独立したライブラリに分割しました:

  • Play Assets Delivery Library
  • Play Feature Delivery Library
  • Play In-App Reviews Library
  • Play In-App Updates Library

各ライブラリには独自の機能と責任があります。

古いコアプレイライブラリは特定のAPIレベルまでのサポートを提供していますので、最新のAPIレベルのサポートを持った新しいライブラリを使用してアプリケーションを移行する必要があります。

根本的には、元のコアプレイライブラリのどの機能を使用しているかを特定する必要があり、その後正しい部分をダウンロードする必要があります。たとえば、アプリケーションの新しいバージョンが利用可能になったときに用户に通知するロジックがあった場合、プレイIn-App-Updatesライブラリを使用する必要があります。

ここでは以下の2つの使用例を示します。

  • ネイティブAndroidアプリケーション
  • Flutterアプリケーション

使用例 – ネイティブAndroidアプリ

ネイティブAndroidアプリケーションを持っている場合、KotlinまたはJavaで書かれているかかっても、以下の操作を行う必要があります。

  1. アプリケーションレベルのbuild.gradleファイルを開きます。
  2. 依存関係のブロックにおいて、おそらく以下の行があります。
implementation 'com.google.android.play:core-ktx:1.8.1'
  1. これを削除し、前のコアライブラリで使用していたものによって置き換える必要があります

  2. Play In-App-Updatesライブラリを使用する必要がある場合、依存関係のブロックに以下を追加する必要があります。

implementation 'com.google.android.play:app-update:2.1.0'
//Kotlinをアプリケーションで使用している場合、下の依存関係を追加してください
implementation 'com.google.android.play:app-update-ktx:2.1.0'
  1. plaintext
    アプリケーションを再構築して、すべてが期待通りに動作していることを確認してください。

✋ また、import com.google.android.play.core.tasks.*;からimport com.google.android.gms.tasks.*;にimport文を変更する必要があるかもしれません。

使用例 – Flutterアプリケーション

FlutterはAndroidとiOSの両方をサポートするフレームワークであるため、このシナリオは上記とは少し異なります。Flutterアプリケーションでコアのplayライブラリをアップグレードする警告を受け取った場合、pubspec.yamlファイルで使用しているライブラリを確認する必要があります:

dependencies:
  flutter:
    sdk: flutter
  ...
  in_app_update: ^3.0.0

上記のように、アプリケーションはin_app_updateライブラリに依存しており、新しいバージョンのアプリケーションが利用可能になったときにユーザーに通知することに関連しています。pub.devの変更履歴ページに行くと、以下のようになります:

バージョン4.1.0では必要なサポートが追加されました

ですので、pubspec.yamlファイルを更新して少なくともそのバージョンを使用する必要があります。

dependencies:
  flutter:
    sdk: flutter
  ...
  in_app_update: ^4.1.0

Pub getを実行すると、問題なく動作するはずです。