您可能最近收到了来自Google Play商店的电子邮件,内容如下:

更新您的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库拆分为四个单独的库:

  • Play Assets Delivery Library(Play资源交付库)
  • Play Feature Delivery Library(Play特性交付库)
  • Play In-App Reviews Library(Play应用内评价库)
  • Play In-App Updates Library(Play应用内更新库)

每个库都有其自身的功能和责任。

由于旧的核心播放库只支持到一定API级别,您需要将应用程序迁移到支持最新API级别的较新库。

本质上,您需要弄清楚原始核心播放库中您使用了哪些功能,然后下载正确的部分。例如,如果您有逻辑用于在应用程序有新版本可用时通知用户,您需要使用Play In-App-Updates库。

我们将在下面介绍两个用例:

  • 原生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. 重建你的应用程序,并确保一切工作正常。

✋ 你可能还需要将导入语句从 import com.google.android.play.core.tasks.*; 更改为 import com.google.android.gms.tasks.*;

用例——Flutter应用程序

由于Flutter是一个同时适用于Android和iOS的框架,这种情况与上面的略有不同。如果你在Flutter应用程序中收到升级核心play库的警告,你需要查看pubspec.yaml文件中你正在使用的库:

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

如你所见,应用程序依赖于 in_app_update 库,这个库与通知用户应用程序有新版本可用有关。当我们转到in_app_update的pub.dev 更新日志页面,我们可以看到:

版本4.1.0添加了所需的支持

所以我们需要更新我们的pubspec.yaml文件以使用该版本(至少)。

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

运行Pub get,你应该就可以顺利进行了。