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ù. Play non mostrerà più le app istantanee agli utenti tramite nessun 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 a alla loro app o al loro gioco normale utilizzando i deep link per reindirizzarli a percorsi o funzionalità specifici, se pertinenti.

Puoi creare un'esperienza Google Play Instant includendola 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 delle funzionalità deprecato (com.android.feature), scopri come eseguire la migrazione dell'app istantanea per supportare gli Android App Bundle.

Configurare l'ambiente di sviluppo

Per fornire un'app istantanea all'interno di un app bundle, devi avere accesso all'SDK di sviluppo di Google Play Instant. 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 di sviluppo di Google Play Instant dalla scheda Strumenti SDK 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, devi avere accesso a un dispositivo fisico o virtuale.

Informazioni 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 questa sandbox.

Autorizzazioni e operazioni supportate

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

Gestire le 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 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 allo spazio di archiviazione esterno; 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 esperienze istantanee

Per essere compatibile con Google Play Instant, devi configurare attentamente diversi aspetti dell'app bundle ad attivazione istantanea. Le sezioni seguenti descrivono queste considerazioni.

Dichiarare le dipendenze del progetto

Per utilizzare le API di 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")

Definire i codici di versione corretti

Il codice di versione dell'app istantanea della tua app 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 di 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 dell'esperienza istantanea.

Puoi sviluppare l'app istantanea e l'app installabile in due progetti Android Studio separati. Tuttavia, se lo fai, devi eseguire le seguenti operazioni per pubblicare l'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 ulteriori dettagli sull'impostazione della versione dell'app, consulta la sezione Assegnare un numero di versione all' app.

Aggiornare la versione della sandbox di destinazione

Il file AndroidManifest.xml dell'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> dell'app, come mostrato nel seguente snippet di codice:

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

Per ulteriori informazioni, consulta la documentazione sull' targetSandboxVersion attributo.

Dichiarare i moduli dell'app ad attivazione istantanea

Puoi dichiarare che l'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 attivare l'app bundle istantaneamente nel seguente modo:

    1. Apri il riquadro Project (Progetto) selezionando View > Tool Windows > Project (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 (Refactoring > Attiva il supporto per le 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 delle funzionalità ad attivazione istantanea. Questa procedura attiva istantaneamente anche il modulo di base dell'app, offrendoti la possibilità di supportare più punti di accesso istantanei all'interno della tua app.

Aggiungere il supporto per l'accesso

Se l'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 "Instant Play" gioco, devi utilizzare l'accesso a Google Play Games Services.

Supportare l'ambiente di esecuzione

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

  • Non condividere il valore di myUid(), ovvero l'UID assegnato dal kernel al processo dell'app .
  • Se la tua app ha come target Android 8.1 (livello API 27) o versioni precedenti, crea un file di configurazione della sicurezza di rete 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é la cache dell'app istantanea non viene cancellata, il che si verifica in una delle seguenti situazioni:

    • La cache dell'app istantanea viene sottoposta a garbage collection perché il dispositivo ha poca memoria disponibile.
    • L'utente riavvia il dispositivo.

    Se si verifica una di queste situazioni, l'utente deve scaricare di nuovo l'app istantanea per interagire con essa.

  • Se il sistema ha pochissimo spazio di archiviazione, è possibile che i dati utente dell'esperienza istantanea vengano rimossi dallo spazio di archiviazione interno. Pertanto, ti consigliamo di sincronizzare periodicamente i dati utente con il server dell'app in modo che i progressi dell'utente vengano conservati.

Aggiungere la logica per i flussi di lavoro delle app istantanee

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

Verificare se l'app sta eseguendo l'app istantanea

Se parte della logica dell'app dipende dal fatto che l'utente stia utilizzando l'app istantanea, chiama il isInstantApp() metodo. Questo metodo restituisce true se il processo in esecuzione è un'app istantanea.

Visualizzare un messaggio di 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 messaggio di richiesta all'interno dell'app istantanea, invitando gli utenti a installare l'esperienza completa sul proprio dispositivo. Per visualizzare questo messaggio di richiesta, utilizza il InstantApps.showInstallPrompt() metodo, 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 a un'esperienza installata

Se l'app istantanea piace all'utente, potrebbe decidere di installare l'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 dell'app. In caso contrario, devi trasferire i dati manualmente. Per farlo, 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

Creare l'app bundle

Puoi utilizzare Android Studio o l'interfaccia a riga di comando per creare l'app bundle ad attivazione istantanea.

Android Studio

Utilizzando Android Studio, puoi creare l'app bundle selezionando Build > Build Bundle(s) / APK(s) > Build Bundle(s) (Crea > Crea app bundle/APK > Crea app bundle). Per ulteriori informazioni sulla creazione del progetto, consulta la sezione Creare il progetto.

Interfaccia a riga di comando

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

Supportare le 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 dell'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'esperienza istantanea da una delle seguenti posizioni per verificarne la funzionalità:

Android Studio

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

  1. Se hai una versione installata dell'app sul dispositivo di test, disinstallala.
  2. In Android Studio, nelle opzioni di installazione visualizzate nella scheda General della finestra di dialogo Run/Debug Configurations dialog, attiva la casella di controllo Deploy as instant app.
  3. Seleziona Run > Run (Esegui > Esegui) nella barra dei menu o fai clic su Run (Esegui) nella barra degli strumenti, quindi scegli il dispositivo su cui vuoi testare le esperienze istantanee dell'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 hai una versione installata dell'app sul dispositivo di test, disinstallala.
  2. Esegui il sideload e l'esecuzione dell'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 l'app nel canale di test interno, completa i seguenti passaggi:

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

    • Il pulsante Prova subito nella scheda dello Store dell'app.
    • Un link da un banner sul sito web dell'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 key e carica l'app bundle su Play Console.
  2. In Play Console, apri Gestione delle release > App istantanee Android, quindi vai al canale Produzione app istantanea.
  3. Seleziona Aggiorna dalla raccolta, quindi seleziona l'app bundle ad attivazione istantanea che hai caricato.

Scegli dove pubblicare l'app istantanea

È possibile avviare un'app istantanea della tua app in un sottoinsieme dei paesi e delle regioni in cui le persone possono installare la tua app. Questa funzionalità è utile nei casi in cui vuoi promuovere l'app istantanea della tua app per gli utenti che risiedono in un insieme 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: Bundling an App in an Instant (Creare un bundle di un'app in un istante)
Scopri come aggiungere un'app istantanea a un Android App Bundle in questa sessione di Android Dev Summit '18.
Video: Publish smaller apps with the Android App Bundle (Pubblicare app più piccole con l'Android App Bundle)
Scopri come gli app bundle ti aiutano a sviluppare la tua app più rapidamente e a creare APK più piccoli per i tuoi utenti.
Codelab: Your First Android App Bundle (Il tuo primo Android App Bundle)
Una guida passo passo per creare un Android App Bundle e aggiungere funzionalità.
The Android App Bundle Format (Il formato Android App Bundle)
Scopri di più su come il programma a riga di comando bundletool organizza un app bundle dal codice e dalle risorse dell'app.