Crea un app bundle ad attivazione istantanea

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.

Per creare un'esperienza Google Play Instant, devi includerla in un Android App Bundle. Un bundle di questo tipo è noto come app bundle ad attivazione istantanea. Questo documento mostra come configurare l'ambiente di sviluppo per gli app bundle abilitati per le app istantanee, nonché come configurare, creare, testare e pubblicare un app bundle abilitato per le app istantanee.

Se hai un progetto di app istantanea esistente che utilizza il plug-in della funzionalità deprecata (com.android.feature), scopri come eseguire la migrazione dell'app istantanea per supportare gli Android App Bundle.

Configura l'ambiente di sviluppo

Per fornire un'esperienza istantanea all'interno di un app bundle, devi accedere all'SDK Google Play Instant Development. Puoi installare l'SDK utilizzando uno dei seguenti metodi:

  • Installa Android Studio 3.6 o versioni successive. Dopo aver aperto Android Studio, scarica l'SDK Google Play Instant Development dalla scheda SDK Tools in SDK Manager.
  • Installare dalla riga di comando:

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

Inoltre, se vuoi testare la tua esperienza istantanea a livello locale, accedi a un dispositivo fisico o virtuale.

Scopri di più sulle condizioni di esecuzione richieste

Google Play Instant esegue gli app bundle abilitati per le app istantanee in un tipo speciale di sandbox SELinux per una maggiore sicurezza. Questa sandbox consente un sottoinsieme di autorizzazioni, nonché tipi limitati di interazioni con altre app. Le sezioni seguenti spiegano in modo più dettagliato le caratteristiche di questa sandbox.

Autorizzazioni e operazioni supportate

Gli app bundle ad attivazione istantanea possono utilizzare solo le autorizzazioni del seguente elenco:

Gestione delle autorizzazioni comuni non supportate

Di seguito è riportato un elenco di autorizzazioni comuni non supportate che devi rimuovere dalla tua applicazione e il percorso di migrazione consigliato per ciascuna:

  • ACCESS_WIFI_STATE: utilizza ACCESS_NETWORK_STATE, che dovrebbe fornire informazioni simili a ACCESS_WIFI_STATE.
  • BILLING: Questa è un'autorizzazione ritirata. Utilizza la Libreria Fatturazione Google Play, che non richiede più l'autorizzazione com.android.vending.BILLING.
  • READ/WRITE_EXTERNAL_STORAGE: le app istantanee non hanno accesso all'archiviazione esterna; utilizza invece l'archiviazione interna.
  • com.google.android.c2dm.permission.RECEIVE e permission.C2D_MESSAGE: C2DM è deprecato. Esegui la migrazione a Firebase Cloud Messaging (FCM). FCM non richiede autorizzazioni aggiuntive per funzionare.

Inoltre, gli app bundle ad attivazione istantanea non possono:

Accesso alle app installate

Quando sviluppi un'esperienza istantanea, tieni presente che non può interagire con le app installate su un dispositivo, a meno che non si verifichi una delle seguenti condizioni:

  • Una o più attività all'interno di un'app installata hanno impostato l'elemento android:visibleToInstantApps su true. Questo elemento è disponibile per le app che eseguono Android 8.0 (livello API 26) o versioni successive.
  • Un'app installata contiene un filtro per intent che include CATEGORY_BROWSABLE.
  • L'esperienza istantanea invia un intent utilizzando l'azione ACTION_SEND, ACTION_SENDTO o ACTION_SEND_MULTIPLE.

Configurare il progetto per le app istantanee

Per essere compatibile con Google Play Instant, devi configurare con attenzione diversi aspetti del tuo Android App Bundle abilitato per le app istantanee. Le sezioni seguenti descrivono queste considerazioni.

Dichiarare le dipendenze del progetto

Per utilizzare le API Google Play Instant nella tua app, includi la seguente dichiarazione nel file di configurazione build.gradle del modulo dell'app:

Groovy

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

Definisci i codici versione corretti

Il codice di versione dell'app istantanea deve essere inferiore al codice di versione dell'app installabile. L'aspettativa è che gli utenti passino dall'esperienza Google Play Instant al download e all'installazione dell'app sul proprio dispositivo. Il framework Android considera questa transizione come un aggiornamento dell'app.

Per assicurarti di seguire lo schema di controllo delle versioni previsto dagli utenti, segui una di queste strategie:

  • Riavvia i codici versione per l'esperienza Google Play Instant a 1.
  • Aumenta il codice di versione dell'APK installabile di un numero elevato, ad esempio 1000, per assicurarti che ci sia spazio sufficiente per aumentare il numero di versione della tua esperienza istantanea.

È possibile sviluppare l'app istantanea e l'app installabile in due progetti Android Studio separati. In questo caso, tuttavia, per pubblicare l'app su Google Play devi:

  1. Utilizza lo stesso nome di pacchetto in entrambi i progetti Android Studio.
  2. In Google Play Console, carica entrambe le varianti nella stessa applicazione.

Per maggiori dettagli sull'impostazione della versione dell'app, vedi Eseguire il controllo della versione dell'app.

Aggiorna la versione della sandbox di destinazione

Il file AndroidManifest.xml della tua app istantanea deve essere aggiornato in modo da avere come target l'ambiente sandbox supportato da Google Play Instant. Puoi completare questo aggiornamento aggiungendo l'attributo android:targetSandboxVersion all'elemento <manifest> della tua app, come mostrato nello snippet di codice seguente:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Per saperne di più, consulta la documentazione relativa all'attributo targetSandboxVersion.

Dichiarare i moduli delle app abilitati per le app istantanee

Puoi dichiarare che il tuo app bundle supporta le app istantanee utilizzando uno dei seguenti metodi:

  • Se hai un app bundle esistente che contiene solo un modulo di base, puoi attivare l'app bundle istantaneo nel seguente modo:

    1. Apri il riquadro Progetto selezionando Visualizza > Finestre degli strumenti > Progetto dalla barra dei menu.
    2. Fai clic con il tasto destro del mouse sul modulo di base, in genere denominato "app", e seleziona Refactor > Enable Instant Apps Support.
    3. Nella finestra di dialogo visualizzata, seleziona il modulo base dal menu a discesa.
    4. Fai clic su OK.

    Android Studio aggiunge la seguente dichiarazione al manifest del modulo:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • Se hai un app bundle esistente che contiene più moduli, puoi creare un modulo delle funzionalità ad attivazione istantanea. Questo processo abilita immediatamente anche il modulo di base dell'app, offrendoti la possibilità di supportare più punti di ingresso istantanei all'interno dell'app.

Aggiungere il supporto per l'accesso

Se la tua app istantanea consente agli utenti di accedere, l'app bundle abilitato per le app istantanee deve supportare Smart Lock per password su Android. Se stai creando un gioco "Instant Play", devi utilizzare l'accesso ai servizi Google Play Giochi.

Supportare l'ambiente di esecuzione

Per essere compatibile con la sandbox SELinux in cui vengono eseguite le app istantanee, tieni presente quanto segue quando crei l'app bundle ad attivazione istantanea:

  • Non condividere il valore di myUid(), che è l'UID assegnato al kernel del processo dell'app.
  • Se la tua app ha come target Android 8.1 (livello API 27) o versioni precedenti, crea un file Network Security Config e imposta cleartextTrafficPermitted su false. Le esperienze istantanee non supportano il traffico HTTP. Per le app che hanno come target Android 9 o versioni successive, il traffico cleartext è disattivato per impostazione predefinita.
  • L'app istantanea rimane scaricata sul dispositivo di un utente finché non viene svuotata la cache dell'app istantanea, il che si verifica in una delle seguenti situazioni:

    • La cache dell'app istantanea viene sottoposta a garbage collection perché la memoria disponibile sul dispositivo è in esaurimento.
    • L'utente riavvia il dispositivo.

    Se si verifica uno dei due processi, l'utente deve scaricare di nuovo l'esperienza istantanea per interagire con essa.

  • Se lo spazio di archiviazione del sistema è quasi esaurito, è possibile che i dati utente dell'esperienza istantanea vengano rimossi dalla memoria interna. Pertanto, è consigliabile sincronizzare periodicamente i dati utente con il server dell'app in modo che i progressi dell'utente vengano conservati.

Aggiungere la logica per i workflow dell'esperienza istantanea

Dopo aver configurato il bundle dell'app in modo che supporti le esperienze istantanee, aggiungi la logica mostrata nelle sezioni seguenti.

Controllare se l'app esegue l'esperienza istantanea

Se parte della logica della tua app dipende dal fatto che l'utente sia coinvolto nella tua esperienza istantanea, chiama il metodo isInstantApp(). Questo metodo restituisce true se il processo attualmente in esecuzione è un'esperienza istantanea.

Visualizzare una richiesta di installazione

Se stai creando una versione di prova della tua app o del tuo gioco, Google Play Instant ti consente di visualizzare un prompt all'interno dell'esperienza istantanea, invitando gli utenti a installare l'esperienza completa sul proprio dispositivo. Per visualizzare questa richiesta, utilizza il metodo InstantApps.showInstallPrompt(), come mostrato nello snippet di codice seguente:

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

Trasferire i dati a un'esperienza installata

Se l'utente apprezza la tua esperienza istantanea, potrebbe decidere di installare la tua app. Per offrire una buona esperienza utente, è importante che i dati dell'utente vengano trasferiti dall'esperienza istantanea alla versione completa dell'app.

Se l'utente utilizza un dispositivo con Android 8.0 (livello API 26) o versioni successive e se la tua app specifica un targetSandboxVersion di 2, i dati dell'utente vengono trasferiti automaticamente alla versione completa della tua app. In caso contrario, devi trasferire i dati manualmente. A tal fine, utilizza una delle seguenti API:

  • Per gli utenti che utilizzano dispositivi con Android 8.0 (livello API 26) e versioni successive, utilizza l'API Cookie - app di esempio
  • Se gli utenti possono interagire con la tua esperienza su dispositivi con Android 7.1 (livello API 25) e versioni precedenti, aggiungi il supporto per l'API Storage - app di esempio

Crea l'app bundle

Puoi utilizzare Android Studio o l'interfaccia a riga di comando per creare il bundle della tua app compatibile con Instant Apps.

Android Studio

Utilizzando Android Studio, puoi creare il tuo app bundle selezionando Build > Build Bundle(s) / APK(s) > Build Bundle(s). Per saperne di più sulla creazione del progetto, consulta Creare il progetto.

Interfaccia a riga di comando

Puoi anche creare il pacchetto dell'app dalla riga di comando utilizzando Gradle.

Supportare architetture a 64 bit

Le app pubblicate su Google Play devono supportare le architetture a 64 bit. L'aggiunta di una versione a 64 bit della tua app offre miglioramenti delle prestazioni e ti prepara per i dispositivi con hardware solo a 64 bit. Scopri di più sul supporto a 64 bit.

Testare l'app istantanea

Prima di pubblicare l'app bundle abilitato per le app istantanee, puoi testare l'esperienza istantanea da una delle seguenti posizioni per verificarne la funzionalità:

Android Studio

Per testare l'esperienza istantanea della tua app su una macchina locale utilizzando Android Studio, completa i seguenti passaggi:

  1. Se sul dispositivo di test è installata una versione dell'app, disinstallala.
  2. In Android Studio, tra le opzioni di installazione visualizzate nella scheda Generale della finestra di dialogo Configurazioni di esecuzione/debug, seleziona la casella di controllo Esegui il deployment come app istantanea.
  3. Seleziona Esegui > Esegui nella barra dei menu oppure fai clic su Esegui nella barra degli strumenti, quindi scegli il dispositivo su cui vuoi testare le esperienze istantanee della tua app. L'esperienza istantanea della tua app viene caricata sul dispositivo di test che hai scelto.

Interfaccia a riga di comando

Per testare l'esperienza istantanea della tua app su una macchina locale utilizzando la riga di comando, completa i seguenti passaggi:

  1. Se sul dispositivo di test è installata una versione della tua app, disinstallala.
  2. Carica ed esegui la tua app istantanea sul dispositivo di test inserendo il seguente comando:
ia run output-from-build-command

canale di test interno

Per testare l'app istantanea dall'app Play Store o da un banner sul tuo sito web, pubblica l'app nel gruppo di test interno su Play Console.

Per pubblicare la tua app nel canale di test interno, completa i seguenti passaggi:

  1. Carica l'app bundle seguendo i passaggi della guida Caricare l'app bundle su Play Console.
  2. Prepara il bundle caricato per una release nel canale di test interno. Per maggiori informazioni, consulta l'articolo del Centro assistenza su come preparare e implementare le release.
  3. Accedi a un account tester interno su un dispositivo, quindi avvia l'esperienza istantanea da una delle seguenti piattaforme:

    • Il pulsante Prova ora nella scheda del Play Store della tua app.
    • Un link da un banner sul sito web della tua app.

Pubblica l'app bundle nel canale di produzione

Per pubblicare l'app bundle abilitato per le app istantanee, completa i seguenti passaggi:

  1. Se non l'hai ancora fatto, firma l'app bundle con una chiave di rilascio e caricalo su Play Console.
  2. In Play Console, apri Gestione delle release > Android Instant Apps, poi vai al gruppo Produzione app istantanea.
  3. Seleziona Aggiorna dalla raccolta, quindi seleziona l'app bundle abilitata per Google Play Instant che hai caricato.

Scegliere dove pubblicare l'app istantanea

È possibile lanciare un'esperienza istantanea della tua app in un sottoinsieme dei paesi e delle regioni in cui gli utenti possono installarla. Questa funzionalità è utile nei casi in cui vuoi promuovere l'esperienza istantanea della tua app presso gli utenti che risiedono in un insieme specifico di paesi e regioni.

Risorse aggiuntive

Per saperne di più sulla creazione di esperienze istantanee e Android App Bundle, consulta le seguenti risorse:

Video: Raggruppare un'app in un'app istantanea
Scopri come aggiungere un'esperienza istantanea a un Android App Bundle in questa sessione dell'Android Dev Summit 2018.
Video: Pubblicare app più piccole con Android App Bundle
Scopri come gli app bundle ti aiutano a sviluppare più rapidamente la tua app e a creare APK più piccoli per i tuoi utenti.
Codelab: il tuo primo Android App Bundle
Una guida passo passo per creare un Android App Bundle e aggiungere funzionalità.
Formato Android App Bundle
Scopri di più su come il programma a riga di comando bundletool organizza un pacchetto dell'app dal codice e dalle risorse dell'app.