Avviso:Google Play Instant non sarà più disponibile. A partire da dicembre 2025, le app istantanee non potranno essere pubblicate tramite Google Play e tutte le API istantanee di Google Play Services non funzioneranno più. Gli utenti non riceveranno più app istantanee da Play utilizzando alcun meccanismo.
Stiamo apportando questa modifica in base al feedback degli sviluppatori e ai nostri continui investimenti per migliorare l'ecosistema dall'introduzione di Google Play Instant.
Per continuare a ottimizzare per la crescita degli utenti, invitiamo gli sviluppatori a indirizzare gli utenti alla loro app o al loro gioco normale utilizzando i deep link per reindirizzarli a percorsi o funzionalità specifici, se pertinenti.
Se utilizzi ancora il plug-in Android Gradle delle funzionalità deprecato
(com.android.feature
) per i moduli delle app istantanee per Android, devi
eseguire la migrazione all'utilizzo del plug-in dell'app di base (com.android.application
) e
del plug-in delle funzionalità dinamiche (com.android.dynamic-feature
).
Nel plug-in Android per Gradle 3.3.0 e versioni successive, il plug-in dell'app di base include il supporto per le esperienze istantanee. ovvero, se il modulo dell'app di base soddisfa i requisiti per essere un'esperienza istantanea, ottieni automaticamente il vantaggio. Puoi quindi includere funzionalità aggiuntive che gli utenti possono scaricare on demand come esperienze istantanee utilizzando il plug-in Dynamic Feature. Questa configurazione semplifica il supporto di un'esperienza di app installata e istantanea da un unico progetto e ti consente di usufruire della pubblicazione con Android App Bundle.
La tabella seguente descrive meglio i plug-in a cui verrà eseguita la migrazione:
Descrizione del modulo | Plug-in precedente | Plug-in attuale |
---|---|---|
Il modulo che include il codice, le risorse e le funzionalità di base per l'esperienza della tua app installata o istantanea. | com.android.feature (con baseFeature = true )
|
com.android.application
Nota: questo modulo include tutte le informazioni sul manifest e sulla firma necessarie per creare e pacchettizzare l'app come Android App Bundle o APK. |
Funzionalità modulari aggiuntive che gli utenti possono scaricare on demand | com.android.feature |
com.android.dynamic-feature (con
dist:instant="true" e
dist:onDemand="false" nel manifest del modulo) |
Codice e risorsa per una funzionalità disponibile solo per la versione installata della tua app. | com.android.application |
com.android.dynamic-feature (con
dist:instant="false" e dist:onDemand="false"
nel manifest del modulo) |
Questa pagina mostra come eseguire la migrazione del progetto di app istantanea esistente per creare un Android App Bundle abilitato per le app istantanee. Descrive inoltre come creare, testare e pubblicare un Android App Bundle abilitato per le app istantanee.
Se stai creando nuove app istantanee per la tua app, leggi Creare un modulo delle funzionalità ad attivazione istantanea.
Comprendere le modifiche
Quando esegui la migrazione del progetto per utilizzare invece il plug-in delle funzionalità dinamiche, gli Android App Bundle offrono un nuovo modo per creare e pubblicare la tua app, semplificando notevolmente la distribuzione di APK ottimizzati agli utenti.
Gli app bundle semplificano la distribuzione raggruppando tutto il codice compilato e le risorse della tua app per il caricamento, ma rimandano la generazione e la firma degli APK a Google Play. Il nuovo modello di pubblicazione delle app di Google Play utilizza l'app bundle per generare e pubblicare APK ottimizzati per la configurazione del dispositivo di ogni utente, in modo che scarichi solo il codice e le risorse necessari per eseguire l'app. Non devi più creare, firmare e gestire più APK per supportare diversi dispositivi e gli utenti ottengono download più piccoli e ottimizzati.
Quando si utilizza il plug-in delle funzionalità ora ritirato, la creazione di un'app istantanea richiedeva la creazione di un modulo delle funzionalità di base, che conteneva il codice e le risorse condivisi per tutti i moduli, incluso il modulo dell'app istantanea. Il resto del codice è stato incluso in più moduli delle funzionalità non di base, che contenevano punti di ingresso per le tue esperienze istantanee. Per la versione installata della tua app, il tuo progetto potrebbe aver incluso un modulo dell'app separato, che conteneva il codice e le attività richieste solo per l'app installata.
Quando esegui la migrazione dell'app per supportare gli Android App Bundle, il modulo dell'app recupera il ruolo di modulo base e organizzi le esperienze aggiuntive installate o istantanee come moduli delle funzionalità. ovvero il tuo progetto ora assomiglia di più a un progetto di app standard, con un modulo base abilitato per le app istantanee e la possibilità di includere esperienze istantanee modulari aggiuntive.
Per eseguire la migrazione del progetto di app istantanea esistente e adottare il modello di distribuzione più ottimizzato di Android App Bundle, segui i passaggi descritti nelle sezioni seguenti.
Convertire il modulo di funzionalità di base in un modulo dell'app
Prima di convertirlo nel modulo principale dell'app, devi modificare il file build.gradle
del modulo della funzionalità di base nel seguente modo:
- Elimina la riga
baseFeature true
. Rimuovi tutte le dipendenze che utilizzano le configurazioni delle dipendenze
feature
oapplication
.Groovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
Sposta
applicationId
, insieme a qualsiasi altra configurazione dello script di build che ti aspetteresti di trovare nel modulo dell'app di base, dal modulocom.android.application
corrente al modulocom.android.feature
. Di seguito sono riportati alcuni esempi. Per questo passaggio, a seconda della configurazionebuild.gradle
specifica, potrebbe essere più facile copiare e incollare il bloccoandroid
dibuild.gradle
dal modulo dell'app precedente nel filebuild.gradle
del nuovo modulo dell'app. Tuttavia, devi prestare attenzione quando lo fai.Groovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
Contrassegna il modulo della funzionalità come abilitato per l'app istantanea aggiungendo i tag di distribuzione del bundle appropriati al manifest, come mostrato di seguito.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
Converti il modulo delle funzionalità nel modulo dell'app di base modificando il tipo di plug-in in
com.android.application
:Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
Convertire il vecchio modulo dell'app in un modulo delle funzionalità al momento dell'installazione
Se non hai codice o risorse nel vecchio modulo dell'app, puoi semplicemente eliminarlo, perché i passaggi che hai seguito nella sezione precedente hanno convertito il modulo della funzionalità nel modulo dell'app di base della tua app.
Tuttavia, se nel vecchio modulo dell'app sono presenti codice e risorse che rappresentano funzionalità che vuoi rendere disponibili agli utenti quando installano la tua app, segui i passaggi descritti in questa sezione per convertire il modulo dell'app in un modulo delle funzionalità.
La creazione di un modulo delle funzionalità comporta la modifica del tipo di plug-in da
com.android.application
a com.android.dynamic-feature
, insieme ad alcune
altre modifiche build.gradle
, come segue:
Cambia il tipo di plug-in da
com.android.application
acom.android.dynamic-feature
.Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
Come descritto nella sezione precedente, assicurati di aver spostato le configurazioni di build richieste dal plug-in
com.android.application
nel modulo dell'app di base, ad esempio le regoleapplicationId
oproguardFiles
.Rinomina il modulo in "installed_feature" o un altro nome a tua scelta:
- Apri il riquadro Progetto selezionando Visualizza > Finestre degli strumenti > Progetto dalla barra dei menu.
- Fai clic con il tasto destro del mouse sul modulo della funzionalità e seleziona Refactor > Rename (Refactor > Rinomina).
- Nella finestra di dialogo visualizzata, seleziona Rinomina modulo e fai clic su Ok.
- Inserisci il nuovo nome del modulo e fai clic su Ok.
Analogamente al passaggio 3, rinomina il nuovo modulo dell'app che hai creato nella sezione precedente in modo che si chiami, ad esempio, "app".
Aggiungi una dipendenza di implementazione dal modulo "app" nel file
build.gradle
del modulo delle funzionalità, come mostrato di seguito.Groovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
Aggiungi la funzionalità al file
build.gradle
del nuovo modulo dell'app.Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
Nel manifest del modulo della funzionalità, contrassegna il modulo della funzionalità come modulo installabile aggiungendo i tag di distribuzione del bundle appropriati al manifest.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Convertire altri moduli delle funzionalità in moduli delle funzionalità abilitati per le app istantanee
Se hai suddiviso funzionalità aggiuntive della tua app in più moduli delle funzionalità, devi seguire i passaggi descritti in questa sezione per convertire questi moduli in moduli delle funzionalità abilitati all'app istantanea.
Per ogni modulo delle funzionalità rimanente nel progetto, procedi nel seguente modo per convertirlo in funzionalità abilitate istantaneamente:
Modifica il tipo di plug-in nel file
build.gradle
incom.android.dynamic-feature
, come mostrato di seguito:Groovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
Contrassegna ogni modulo delle funzionalità come abilitato per le app istantanee aggiungendo quanto segue al manifest.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Aggiungi il modulo della funzionalità al file
build.gradle
del nuovo modulo dell'applicazione in cui hai aggiuntoinstalled_feature
all'elenco dei moduli delle funzionalità.Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
Crea, testa e pubblica un nuovo app bundle abilitato per Google Play Instant
Dopo aver completato i passaggi descritti in questa pagina, il tuo progetto è in grado di produrre un unico artefatto, un Android App Bundle, che puoi utilizzare per pubblicare sia la versione installata che quella istantanea della tua app su Google Play Console ed eseguire il lancio separatamente per i canali istantaneo e installato. Inoltre, con gli app bundle, puoi pubblicare APK ottimizzati per la configurazione del dispositivo di ogni utente, in modo che scarichino solo il codice e le risorse necessari per eseguire la tua app. Ciò significa che non devi più creare, firmare e gestire più APK per supportare diversi dispositivi e gli utenti ottengono download più piccoli e ottimizzati.
Per iniziare a creare e testare il tuo app bundle ad attivazione istantanea, vai a Crea l'app bundle.