6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

背景

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 ライブラリは削除しましょう。

build.gradle(:app)
...
dependencies {
    ...
    
-  implementation 'com.google.android.play:core:[任意のバージョン]'

    ...
}
...

必要なライブラリを導入

次に必要なライブラリを導入していきます。

Play Asset Delivery Library を統合する

build.gradle(:app)

...
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 を統合する

build.gradle(:app)
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 を統合する

build.gradle(:app)
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 を統合する

build.gradle(:app)
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 となっている点です。

🤖<全部、修正すれば良いのに

そこも変えると変更箇所が多くなってしまうからでしょうか🤔

参考資料

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?