背景
Androidアプリリリース時に、こんなメールが来ました。
Google Play Core (com.google.android.play:core) has added this note for SDK version 1.10.3:
Update your Play Core Maven dependency to an Android 14 compatible version! Your current Play Core library is incompatible with targetSdkVersion 34 (Android 14), which introduces a backwards-incompatible change to broadcast receivers to improve user security. As a reminder, from August 31, Google Play requires all new app releases to target Android 14. Update to the latest Play Core library version dependency to avoid app crashes: https://developer.android.com/guide/playcore#playcore-migration
日本語訳
Google Play Core (com.google.android.play:core) は、SDKバージョン1.10.3に以下の注意書きを追加しました: Play CoreのMaven依存関係をAndroid 14互換バージョンに更新してください!現在のPlay CoreライブラリはtargetSdkVersion 34 (Android 14) と互換性がありません。Android 14では、ユーザーのセキュリティを向上させるためにブロードキャストレシーバーに後方互換性のない変更が導入されています。なお、8月31日以降、Google Playではすべての新しいアプリリリースがAndroid 14をターゲットにすることが求められます。アプリのクラッシュを回避するために、最新のPlay Coreライブラリバージョンに更新してください:https://developer.android.com/guide/playcore#playcore-migrationまとめると、
- Google Play Core では、SDKバージョンに注意事項が追加された
- Play Core Maven の依存関係を Android14 の互換バージョンに更新してほしい
って感じかな。
Google Play Core とは
Google が提供する Android 向けのライブラリです。アプリ開発者が様々なGoogle Play 機能をアプリに統合できるように手助けをしてくれます。主に以下のような機能をアプリに追加できます。
- 追加の言語リソースをダウンロード
- 機能モジュールの配信を管理
- アセットバックの配信を管理
- アプリ内アップデートをトリガーする
- アプリ内レビューをリクエストする
この警告について
この警告は、Google Play Core ライブラリを使用しているアプリに対して表示されます。
この警告が表示された理由として、Google Play Core の Java と Kotlin ライブラリは機能別に複数の Android ライブラリに分割されたからです。
複数のライブラリに分かれることによって、Play Core ライブラリがアプリに追加するサイズが減り、個々の機能のリリースサイクルを短縮できるようになりました。
この対応で何が変わるの?
この対応でソースコードが大きく変わることはありません。
公式ドキュメントにもありますが、唯一大きな変更点は、新しいバージョンで、Google Play 開発者サービスの Task APIが採用されたくらいです。そのほかはほとんど変更することはありませんでした。
対応方法
Task オブジェクト
プロジェクト内で import com.google.android.play.core.tasks.*;
があれば、変更する必要があります。
しかし、変更はとても容易で、play.core.tasks.*
参照を gms.tasks.*
に変更するだけです。クラス名などを変更する必要はありません。
- import com.google.android.play.core.tasks.*;
+ import com.google.android.gms.tasks.*;
Gradle の対応
build.gradle(:app) ファイルにあるライブラリを修正していきます。
Play Core ライブラリの削除
分割されたライブラリを導入するため、既存の Play Core ライブラリは削除しましょう。
...
dependencies {
...
- implementation 'com.google.android.play:core:[任意のバージョン]'
...
}
...
必要なライブラリを導入
次に必要なライブラリを導入していきます。
Play Asset Delivery Library を統合する
...
dependencies {
...
+ implementation 'com.google.android.play:asset-delivery:2.2.2'
// プロジェクトがKotlinの場合
+ implementation 'com.google.android.play:asset-delivery-ktx:2.2.2'
...
}
Play Feature Delivery Library を統合する
dependencies {
...
+ implementation 'com.google.android.play:feature-delivery:2.1.0'
// プロジェクトがKotlinの場合
+ implementation 'com.google.android.play:feature-delivery-ktx:2.1.0'
...
}
Play In-App Review Library を統合する
dependencies {
...
+ implementation 'com.google.android.play:review:2.0.1'
// プロジェクトがKotlinの場合
+ implementation 'com.google.android.play:review-ktx:2.0.1'
...
}
Play In-App Update Library を統合する
dependencies {
...
+ implementation 'com.google.android.play:app-update:2.1.0'
// プロジェクトがKotlinの場合
+ implementation 'com.google.android.play:app-update-ktx:2.1.0'
...
}
全てのライブラリを入れる必要はありません。必要なライブラリだけ入れてください。
個人的に、私はアップデート周りの機能しか使っていないので、"Play In-App Update Library" のみ入れました。
上記は公式ドキュメントのものです。変更される場合があるので、ご注意ください。
最後に
これで警告は解消されると思います。
対応していて疑問なのが、今回の対応をしなくてはいけないのに、ドキュメント上では、com.google.android.play.core.appupdate.xxxxx
となっている点です。
🤖<全部、修正すれば良いのに
そこも変えると変更箇所が多くなってしまうからでしょうか🤔
参考資料