Вы, скорее всего, недавно получили электронное письмо от Google Play Store, содержащее следующее:

Обновите вашу зависимость Maven Play Core до версии, совместимой с Android 14! Ваша текущая библиотека Play Core несовместима с targetSdkVersion 34 (Android 14), что introduce a backward-incompatible change to broadcast receivers to improve user security. как напоминание, с 31 августа Google Play требует, чтобы все новые выпуски приложений направлялись на Android 14. Обновитете зависимость最新 Play Core library version dependency, чтобы избежать крашек приложений: https://developer.android.com/guide/playcore#playcore-migration

Вы, возможно, не сможете выпустить будущие версии вашего приложения с этой версией SDK в продукцию или открытые тесты.

Это выглядит страшно, не так ли?

Не так уж и страшно. Это на самом деле проще, чем может показаться.

Объяснение изменения

В основном, Google прекратили выпуск новых версий библиотеки play core еще в начале 2022 года.


Последняя выпущенная версия библиотеки play core

И с апреля 2022 года они разбили исходную библиотеку play core на четыре отдельные библиотеки:

  • библиотека доставки активов Play Assets Delivery Library
  • библиотека доставки функций Play Feature Delivery Library
  • библиотека отзывов в приложениях Play In-App Reviews Library
  • библиотека обновлений в приложениях Play In-App Updates Library

Каждая библиотека обладает своей собственной функциональностью и ответственностью.

Поскольку старое ядро библиотеки play поддерживает только до определенного уровня API, вам необходимо мигрировать ваше приложение на использование более новых библиотек, которые имеют поддержку наиболее последних уровней API.

В основе, вам нужно определить, какую функциональность оригинальной ядра библиотеки play вы используете, и затем загрузите соответствующую часть. Например, если у вас была логика для уведомления пользователей о наличии более новой версии вашего приложения, вам нужно взять библиотеку Play In-App-Updates.

Мы будем рассматривать два случая использования:

  • Нативное приложение Android
  • Приложение Flutter

Случай использования – Нативное приложение Android

Если у вас есть нативное приложение Android, будь то написано на Kotlin или Java, вам нужно сделать следующее:

  1. Откройте ваш файл build.gradle приложения на уровне
  2. Скорее всего, вы увидите в блоке dependencies эту строку:
implementation 'com.google.android.play:core-ktx:1.8.1'
  1. Вам нужно будет удалить ее и заменить в соответствии с тем, что вы использовали в предыдущей ядренной библиотеке

  2. Если вам нужно взять библиотеку Play In-App-Updates, то вам нужно добавить это в блок dependencies:

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.*;.

Сценарий использования – Приложение Flutter

Поскольку Flutter является фреймворком, ориентированным как на Android, так и на iOS, этот сценарий немного отличается от описанного выше. Если вы получаете предупреждение о необходимости обновить базовую библиотеку play в вашем приложении Flutter, вам нужно проверить библиотеки, которые вы используете в вашем файле 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 и все должно быть в порядке.