Riduci le dimensioni dell'app 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.

Google Play Instant offre esperienze native e complete con un semplice tocco di un link web. Gli utenti possono provare la tua app senza installarla in anticipo, il che consente di ottenere un livello e una qualità di coinvolgimento superiori. Per fare in modo che un'app istantanea si carichi rapidamente come una normale pagina web mobile, devi creare un'app istantanea efficiente e ben strutturata. Più piccolo è il binario dell'app istantanea, più velocemente si carica e più fluida è l'esperienza utente.

Questo documento illustra le best practice per la gestione della struttura e delle dimensioni del binario dell'app per consentire un'esperienza fluida con le app istantanee. Puoi applicare queste stesse pratiche anche a vantaggio della tua app installabile.

Refactoring in più moduli delle funzionalità

Il miglioramento più significativo delle dimensioni del binario dell'app si verifica quando esegui il refactoring dell'app in più moduli di funzionalità. Inizia con un modulo della funzionalità di base, poi estrai i flussi di lavoro correlati per tema nei propri moduli delle funzionalità. Assegna un'attività iniziale e un URL univoco a ogni modulo delle funzionalità in modo che gli utenti possano completare correttamente il flusso di lavoro del modulo.

Quando crei i moduli delle funzionalità, mantieni il modulo di funzionalità di base il più piccolo possibile. In particolare, presta molta attenzione alle parti della tua app che richiedono l'accesso alle librerie dipendenti. Se un solo modulo di funzionalità utilizza una determinata libreria, importala nel modulo di funzionalità stesso, non nel modulo di funzionalità di base. Tieni presente che, per rilasciare un'app istantanea per un modulo di funzionalità specifico, le dimensioni totali di questo modulo e del modulo di funzionalità base devono essere inferiori a 15 MB.

Best practice

Quando esegui il refactoring della tua app, tieni presente le seguenti best practice:

Utilizzare lo stesso codebase per entrambi i tipi di app
Puoi semplificare la procedura di gestione dei progetti della tua app utilizzando la stessa base di codice modulare per creare sia l'app installata sia le app istantanee.
Progettare per più moduli delle funzionalità
Anche se la tua app ha un solo flusso di lavoro e al momento richiede un solo modulo delle funzionalità, è comunque consigliabile progettare per più moduli delle funzionalità. In questo modo, puoi aggiungere moduli esistenti alla tua app senza influire sulle dimensioni del modulo delle funzionalità originale.
All'inizio non concentrarti sul limite di dimensioni del modulo delle funzionalità
I limiti di dimensione dei moduli delle funzionalità non si applicano ai file binari creati localmente. Puoi anche rilasciare un'app istantanea tramite il gruppo di test interno, che impone un limite di 15 MB alle dimensioni dei moduli delle funzionalità. Solo le versioni alpha e di produzione applicano il limite di 15 MB.

Aggiornare le risorse dell'app

Alcune app, in particolare quelle con una cronologia del codebase più lunga, contengono risorse che i file binari della tua app non utilizzano più. Mentre cerchi modi per ridurre le dimensioni dei moduli della tua app, considera le seguenti fonti comuni di codice non necessario.

Ridurre le dimensioni dei file immagine

Puoi ridurre significativamente le dimensioni totali delle risorse disegnabili della tua app utilizzando il formato file WebP anziché PNG. Google Play Instant offre il supporto completo per WebP, inclusi trasparenza e compressione senza perdita di dati, in modo che la qualità dell'immagine rimanga invariata.

Se possibile, rimuovi tutti i requisiti di compatibilità con le versioni precedenti per l'utilizzo di altre immagini PNG. Se devi utilizzare immagini PNG, inseriscile nel modulo utilizzato per creare e installare l'app.

Rimuovere le lingue inutilizzate

Se la tua app supporta più lingue, riduci il numero di risorse localizzate il più possibile. Questo passaggio è particolarmente utile se utilizzi una libreria "app compat", come android.support.v7.appcompat. Questa libreria include messaggi in molte lingue, alcune delle quali potrebbero non essere supportate dalla tua app.

Per saperne di più, scopri come rimuovere le risorse alternative inutilizzate, in particolare le lingue inutilizzate.

Rimuovere i file aggiuntivi

La tua app potrebbe non utilizzare più alcune delle risorse che hai importato nel tuo progetto. Per facilitare la rimozione di queste risorse, Android Studio dispone di un controllo Lint per questa situazione specifica. Per utilizzare lo strumento, completa i seguenti passaggi:

  1. Premi Ctrl+Alt+Maiusc+I (Cmd+Alt+Maiusc+I su Mac OS).
  2. Nella finestra di dialogo visualizzata, digita "unused resources".
  3. Seleziona l'opzione Risorse inutilizzate per avviare la procedura di ispezione dell'utilizzo delle risorse.

Se nell'app rimangono risorse di grandi dimensioni, valuta la possibilità di decomprimerle dall'app e scaricarle come file autonomi dopo che l'utente inizia a interagire con l'app. Questo tipo di differimento del caricamento delle immagini di solito richiede una modifica del codice, ma può ridurre notevolmente le dimensioni del file dell'app istantanea scaricando solo le risorse richieste esplicitamente da un utente.

Rimuovere le librerie inutilizzate

Man mano che l'ambito di un'app si espande, può assumere un numero sorprendente di dipendenze, in particolare uno dei seguenti tipi:

  • Librerie native:librerie che contengono codice nativo che la tua app istantanea non esegue mai.
  • Dipendenze transitive: librerie da cui dipendono le librerie importate dalla tua app.

Android Studio dispone di diversi strumenti utili per identificare eventuali dipendenze estranee nel progetto della tua app:

Librerie esterne

La vista Project (Progetto) di Android Studio include una sezione External Libraries (Librerie esterne).

Questa sezione contiene tutte le librerie utilizzate dalla tua app, incluso il codice nativo e tutte le dipendenze transitive. In questa visualizzazione, cerca librerie inutilizzate o duplicate che la tua app non richiede.

Strumento di analisi APK

Puoi utilizzare lo strumento APK Analyzer per confrontare diverse build, incluse quelle delle app istantanee.

Dopo aver determinato le librerie di cui la tua app non ha bisogno, escludile aggiungendo righe simili alle seguenti al file di build Gradle:

<feature_module>/build.gradle

Groovy

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Per saperne di più su come ridurre le dimensioni totali dell'importazione delle dipendenze della tua app, consulta la guida di Gradle alla gestione delle dipendenze.

Implementare la distribuzione degli asset sul cloud

Se devi ridurre ulteriormente le dimensioni, potresti dover fare affidamento alla distribuzione degli asset sul cloud.