Potreste aver ricevuto recentemente un’email dalla Google Play Store che recita il seguente:

Aggiorna il tuo dipendente Maven di Play Core alla versione compatibile con Android 14! La tua attuale libreria Play Core non è compatibile con targetSdkVersion 34 (Android 14), che introduce una modifica non retrocompatibile nei ricevitori di broadcast per migliorare la sicurezza utente. Come ricordo, a partire dal 31 agosto, Google Play richiede a tutti i nuovi rilasci di app di mirare ad Android 14. Aggiorna alla versione più recente della dipendenza della libreria Play Core per evitare crash dell’applicazione: https://developer.android.com/guide/playcore#playcore-migration

Potresti non essere in grado di rilasciare future versioni dell’app con questa versione dell’SDK in produzione o nelle fasi di test aperte.

Sembra terribile, non è vero?

Non preoccuparti troppo. E’ di fatto più semplice di quanto sembri.

Cosa riguarda davvero questo cambiamento

In sostanza, Google ha smesso di rilasciare nuove versioni della libreria Play Core a metà del 2022.


Ultima versione della libreria Play Core rilasciata

E da aprile 2022, hanno smembrato la libreria Play Core originale in quattro librerie separate:

  • Play Assets Delivery Library
  • Play Feature Delivery Library
  • Play In-App Reviews Library
  • Play In-App Updates Library

Ogni libreria ha le sue funzionalità e responsabilità.

Dato che la vecchia libreria core Play supporta solo fino ad un determinato livello di API, è necessario migrare l’applicazione per utilizzare le nuove librerie che supportano i più recenti livelli di API.

In sostanza, bisogna determinare quale funzionalità della libreria core Play originale si sta utilizzando e quindi scaricare la parte corretta. Per esempio, se c’era una logica per notificare agli utenti l’availability di una nuova versione dell’applicazione, è necessario prendere la libreria Play In-App-Updates.

In questo documento viene presentato due casi d’uso:

  • Applicazione Android nativa
  • Applicazione Flutter

Caso d’uso – App Android nativa

Se si ha una applicazione Android nativa, scritta in Kotlin o Java, bisogna fare i seguenti passaggi:

  1. Aprire il file build.gradle a livello di applicazione
  2. Probabilmente vedrete, nel blocco delle dipendenze, questa riga:
implementation 'com.google.android.play:core-ktx:1.8.1'
  1. Dovete la rimuovere e sostituirla con ciò che avete utilizzato nella precedente libreria core

  2. Se serve prendere la libreria Play In-App-Updates, allora dovete aggiungere queste righe nel blocco delle dipendenze:

implementation 'com.google.android.play:app-update:2.1.0'
//Aggiungere la dipendenza qui sotto se utilizzate Kotlin nell'applicazione
implementation 'com.google.android.play:app-update-ktx:2.1.0'
  1. Ricompila il tuo applicazione e verifica che tutto funzioni come previsto.

✋ Puoi anche dover cambiare le dichiarazioni di importazione da import com.google.android.play.core.tasks.*; a import com.google.android.gms.tasks.*;.

Scenario d’uso – Applicazione Flutter

Poiché Flutter è un framework che supporta sia Android che iOS, questo scenario è un po ‘diverso da quello descritto prima. Se ricevi un avviso per l’aggiornamento della libreria core play nella tua applicazione Flutter, devi controllare le librerie che stai usando nel tuo file pubspec.yaml:

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

Come puoi vedere sopra, l’applicazione dipende dalla libreria in_app_update, che ha a che fare con la notifica agli utenti della disponibilità di una nuova versione dell’applicazione. Quando vai sulla pagina changelog di in_app_update su pub.dev, puoi vedere che:


la versione 4.1.0 ha aggiunto il supporto richiesto

Quindi devi aggiornare il tuo file pubspec.yaml per usare quella versione (almeno).

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

Esegui Pub get e dovresti essere pronto a go.