您可能最近收到來自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圖書館
  • Play Feature Delivery圖書館
  • Play In-App Reviews圖書館
  • Play In-App Updates圖書館

每個庫都有其自己的功能和責任。

由於較老的Core Play庫只支持到一定API水平,您需要將您的應用程序遷移到支持最新API水平的新庫。

根本來說,您需要確定原始Core Play庫中您正在使用哪些功能,然後下載正確的部分。例如,如果您有當您的應用程序有新的版本可供使用時通知用戶的邏輯,您需要使用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. 您需要移除它,並根據您在以前的Core庫中使用的內容來替換它

  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,你应该就可以正常使用了。