Crea un app bundle ad attivazione istantanea

Puoi creare un'esperienza Google Play Instant includendola in un Android App Bundle. Questo bundle è noto come app bundle abilitato per le app istantanee. Questo documento mostra come configurare il tuo ambiente di sviluppo per gli app bundle ad attivazione istantanea e come configurare, creare, testare e pubblicare un app bundle ad attivazione istantanea.

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

Configura l'ambiente di sviluppo

Per offrire un'esperienza istantanea all'interno di un app bundle, devi accedere all'SDK Instant Development di Google Play. 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.
  • Installa dalla riga di comando:

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

Inoltre, se vuoi testare l'app istantanea in locale, puoi accedere a un dispositivo fisico o virtuale.

Scopri di più sulle condizioni di esecuzione richieste

Per maggiore sicurezza, Google Play Instant esegue app bundle ad attivazione istantanea in un tipo speciale di sandbox SELinux. Questa sandbox consente l'utilizzo di un sottoinsieme di autorizzazioni, nonché di tipi limitati di interazioni con altre app. Le seguenti sezioni illustrano in modo più dettagliato le caratteristiche di questa sandbox.

Operazioni e autorizzazioni supportate

Gli app bundle ad attivazione istantanea possono usare soltanto le autorizzazioni dell'elenco seguente:

Gestione delle autorizzazioni comuni non supportate

Di seguito è riportato un elenco delle autorizzazioni comuni non supportate che devi rimuovere dall'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 a unità di 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 ha bisogno di autorizzazioni aggiuntive per funzionare.

Inoltre, gli app bundle ad attivazione istantanea non possono:

Accesso alle app installate

Durante lo sviluppo di un'esperienza istantanea, tieni presente che il dispositivo 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 il relativo elemento android:visibleToInstantApps su true: questo elemento è disponibile per le app con 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.

Configura il tuo progetto per app istantanee

Per garantire la compatibilità con Google Play Instant, devi configurare attentamente diverse aspetti dell'app bundle ad attivazione istantanea. Queste considerazioni vengono descritte nelle sezioni seguenti.

Dichiara 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:

Trendy

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 della tua app deve essere inferiore a quello 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 di versione dell'esperienza Google Play Instant il giorno 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'app istantanea.

Puoi sviluppare l'app istantanea e l'app installabile in due progetti Android Studio distinti. In questo caso, tuttavia, per pubblicare la tua app su Google Play, procedi nel seguente modo:

  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 ulteriori dettagli sull'impostazione della versione dell'app, vedi Eseguire il controllo della versione dell'app.

Aggiorna la versione sandbox di destinazione

Il file AndroidManifest.xml della tua app istantanea deve essere aggiornato in modo che abbia 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 nel seguente snippet di codice:

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

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

Dichiara i moduli dell'app ad attivazione istantanea

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

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

    1. Apri il riquadro Progetto selezionando Visualizza > Finestre degli strumenti > Progetto dalla barra dei menu.
    2. Fai clic con il pulsante destro del mouse sul modulo di base, in genere chiamato "app", e seleziona Refactoring > Abilita supporto app istantanee.
    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 di funzionalità ad attivazione istantanea. Questo processo attiva anche istantaneamente il modulo di base dell'app, offrendoti la possibilità di supportare più punti di ingresso istantanei all'interno dell'app.

Aggiungi 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 "Gioca subito", dovresti utilizzare l'accesso ai servizi per i giochi di Google Play.

Supporta l'ambiente di esecuzione

Per la compatibilità con la sandbox di SELinux in cui vengono eseguite le esperienze istantanee, tieni presente quanto segue durante la creazione dell'app bundle ad attivazione istantanea:

  • Non condividere il valore di myUid(), che è l'UID assegnato dal kernel 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 destinate ad Android 9 o versioni successive, il traffico con testo in chiaro è disattivato per impostazione predefinita.
  • L'app istantanea rimane scaricata sul dispositivo di un utente finché la cache dell'app istantanea non viene svuotata, in una delle seguenti situazioni:

    • La cache dell'app istantanea è garbage-collected perché la memoria disponibile sul dispositivo sta per esaurirsi.
    • L'utente riavvia il dispositivo.

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

  • Se lo spazio di archiviazione nel sistema sta esaurendo, è possibile che i dati utente dell'app istantanea vengano rimossi dalla memoria interna. Pertanto, ti consigliamo di sincronizzare periodicamente i dati utente con il server dell'app in modo che l'avanzamento dell'utente venga mantenuto.

Aggiungi logica per i flussi di lavoro dell'app istantanea

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

Controlla se è in esecuzione l'app istantanea

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

Mostra una richiesta di installazione

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

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 su un'esperienza installata

Se l'utente apprezza l'app istantanea, potrebbe decidere di installare la tua app. Per offrire una buona esperienza utente, è importante che i dati dell'utente vengano trasferiti dalla tua 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 valore targetSandboxVersion di 2, i dati dell'utente vengono trasferiti automaticamente alla versione completa dell'app. In caso contrario, devi trasferire i dati manualmente. Per farlo, utilizza una delle API seguenti:

  • 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 sui dispositivi con Android 7.1 (livello API 25) e versioni precedenti, aggiungi il supporto per l'API Storage - app di esempio

Creare l'app bundle

Puoi usare Android Studio o l'interfaccia a riga di comando per creare il tuo app bundle abilitato per le app istantanee.

Android Studio

Con Android Studio, puoi creare il tuo app bundle selezionando Crea > Bundle/APK di build > Bundle di build. Per saperne di più sulla creazione del progetto, consulta Creazione del progetto.

Interfaccia a riga di comando

Puoi anche creare l'app bundle dalla riga di comando utilizzando Gradle.

Supporto di 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 consente la configurazione per i dispositivi con hardware solo a 64 bit. Scopri di più sul supporto del formato a 64 bit.

Testa l'app istantanea

Prima di pubblicare l'app bundle ad attivazione istantanea, puoi testare l'app istantanea da una delle seguenti posizioni per verificare la funzionalità:

Android Studio

Per testare l'esperienza istantanea della tua app su un computer locale utilizzando Android Studio, procedi nel seguente modo:

  1. Se hai installato una versione della tua app sul tuo dispositivo di test, disinstallala.
  2. In Android Studio, dalle opzioni di installazione visualizzate nella scheda Generali della finestra di dialogo Configurazioni di esecuzione/debug, attiva la casella di controllo Esegui il deployment come app istantanea.
  3. Seleziona Esegui > Esegui nella barra dei menu o 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 della tua app viene caricata sul dispositivo di test che hai scelto.

Interfaccia a riga di comando

Per testare l'app istantanea della tua app su una macchina locale utilizzando la riga di comando, procedi nel seguente modo:

  1. Se hai installato una versione della tua app sul tuo dispositivo di test, disinstallala.
  2. Esegui il sideload e l'esecuzione dell'app istantanea sul tuo dispositivo di test inserendo il seguente comando:
ia run output-from-build-command

Canale di test interno

Per testare l'app istantanea della tua app dal Play Store o un banner sul tuo sito web, pubblica l'app nel canale di test interno in Play Console.

Per pubblicare l'app nel canale di test interno:

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

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

Pubblicare l'app bundle nel canale di produzione

Per pubblicare l'app bundle ad attivazione istantanea, completa i seguenti passaggi:

  1. Se non l'hai ancora fatto, firma l'app bundle con una chiave di release e carica l'app bundle su Play Console.
  2. In Play Console, apri Gestione delle release > App istantanee Android, poi vai al canale Produzione istantanea di app.
  3. Seleziona Aggiorna dalla raccolta, quindi seleziona l'app bundle ad attivazione istantanea che hai caricato.

Scegli dove pubblicare l'app istantanea

Puoi avviare un'esperienza istantanea della tua app in un sottoinsieme di paesi e regioni in cui gli utenti possono installarla. Questa funzionalità è utile nei casi in cui vuoi promuovere l'esperienza istantanea della tua app per gli utenti che risiedono in un gruppo specifico di paesi e regioni.

Risorse aggiuntive

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

Video: raggruppamento di un'app in un attimo
Scopri come aggiungere un'esperienza istantanea ad Android App Bundle in questa sessione dell'Android Dev Summit '18.
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 app bundle a partire dal codice e dalle risorse della tua app.