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'app istantanea Google Play, 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 ad attivazione istantanea, nonché come configurare, creare, testare e pubblicare un app bundle ad attivazione istantanea.

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 Android App Bundle.

Configura l'ambiente di sviluppo

Per fornire un'app 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 Strumenti SDK 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 app 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 ad attivazione istantanea 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 questo ambiente sandbox.

Autorizzazioni e operazioni supportate

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

Gestione delle autorizzazioni non supportate comuni

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 deprecata. 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 la memoria 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'app 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'app 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 app bundle ad attivazione istantanea. 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:

Alla moda

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 di 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'app istantanea Google Play 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 dell'esperienza istantanea.

Puoi sviluppare l'app istantanea e l'app installabile in due progetti Android Studio separati. Se lo fai, tuttavia, devi eseguire le seguenti operazioni per pubblicare la tua app su Google Play:

  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 ad attivazione istantanea

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 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 di 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 ad attivazione istantanea deve supportare Smart Lock per password su Android. Se stai creando un gioco istantaneo, devi utilizzare l'accesso ai servizi di Google Play Giochi.

Supporta 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 in testo non crittografato è disattivato per impostazione predefinita.
  • La tua 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 è quasi esaurita.
    • L'utente riavvia il dispositivo.

    Se si verifica uno dei due processi, l'utente deve scaricare di nuovo la tua app 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 delle app istantanee

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

Controllare se l'app esegue l'app istantanea

Se parte della logica della tua app dipende dal fatto che l'utente sia coinvolto nella tua app istantanea, chiama il metodo isInstantApp(). Questo metodo restituisce true se il processo attualmente in esecuzione è un'app 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'app istantanea, invitando gli utenti a installare l'esperienza completa sul proprio dispositivo. Per visualizzare questo prompt, 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 app istantanea, potrebbe decidere di installare la tua app. Per offrire una buona esperienza utente, è importante che i dati dell'utente vengano trasferiti dall'app 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 ad attivazione istantanea.

Android Studio

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

Interfaccia a riga di comando

Puoi anche creare l'app bundle 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 ad attivazione istantanea, puoi testare l'app 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 della tua app, disinstallala.
  2. In Android Studio, tra le opzioni di installazione visualizzate nella scheda Generale della finestra di dialogo Esegui/Esegui il debug delle configurazioni, 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'app istantanea viene caricata sul dispositivo di test che hai scelto.

Interfaccia a riga di comando

Per testare l'app istantanea 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 dal Play Store o da un banner sul tuo sito web, pubblica l'app nel canale 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 dello 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 il tuo app bundle ad attivazione istantanea, 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 > App istantanee Android, poi vai al canale Produzione app istantanea.
  3. Seleziona Aggiorna dalla raccolta, quindi seleziona l'app bundle ad attivazione istantanea che hai caricato.

Scegliere dove pubblicare l'app istantanea

È possibile lanciare un'app istantanea in un sottoinsieme dei paesi e delle regioni in cui gli utenti possono installare la tua app. Questa funzionalità è utile nei casi in cui vuoi promuovere l'app istantanea 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'app 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 aggiungervi funzionalità.
Formato Android App Bundle
Scopri di più su come il programma a riga di comando bundletool organizza un pacchetto dell'app a partire dal codice e dalle risorse dell'app.