Riduci le dimensioni dell'app istantanea

Google Play Instant offre esperienze native ricche e interessanti semplicemente toccando un link web. Gli utenti possono sperimentare la tua app senza installazione preliminare, il che garantisce un livello e una qualità di coinvolgimento maggiori. Tuttavia, per fare in modo che un'app istantanea si carichi rapidamente come una tipica pagina web per dispositivi mobili, devi creare un'app istantanea ben strutturata ed efficiente. Più piccolo è il file binario dell'app istantanea, più veloce si carica e più fluida è l'esperienza utente.

Questo documento descrive le best practice per la gestione della struttura e delle dimensioni binarie dell'app al fine di offrire un'esperienza fluida con l'app istantanea. Puoi applicare queste stesse pratiche anche per le app installabili.

Esegui il refactoring in più moduli di funzionalità

Il miglioramento maggiore alla dimensione binaria della tua app si verifica quando esegui il refactoring dell'app in più moduli di funzionalità. Inizia con un modulo di funzionalità di base, quindi estrai i flussi di lavoro tematici nei rispettivi moduli di funzionalità. Assegna un'attività iniziale e un URL univoco a ciascun modulo della funzionalità in modo che gli utenti possano completare correttamente il flusso di lavoro del modulo.

Quando crei moduli delle caratteristiche, cerca di ridurre il più possibile le dimensioni del relativo modulo. In particolare, presta molta attenzione alle parti dell'app che richiedono l'accesso alle librerie dipendenti. Se solo un modulo della funzionalità utilizza una determinata libreria, importa quella libreria nel modulo della funzionalità stesso, non nel modulo della funzionalità di base. Tieni presente che, per rilasciare un'app istantanea per un determinato modulo delle funzionalità, la dimensione totale del relativo modulo delle funzionalità e del modulo delle funzionalità di base deve essere inferiore a 15 MB.

Best practice

Quando esegui il refactoring dell'app, tieni presente le seguenti best practice:

Utilizza lo stesso codebase per entrambi i tipi di app
Puoi semplificare il processo di gestione dei progetti della tua app utilizzando lo stesso codebase modulare per creare sia l'app installata sia le app istantanee.
Progettare per più moduli di funzionalità
Anche se la tua app ha un solo flusso di lavoro e richiede un solo modulo di funzionalità per il momento, è comunque una buona idea progettare per più moduli di funzionalità. In questo modo puoi aggiungere moduli esistenti alla tua app senza influire sulle dimensioni del modulo delle funzionalità originale.
Non concentrarti sul limite delle dimensioni del modulo della funzionalità all'inizio
I limiti di dimensioni dei moduli delle funzionalità non si applicano ai programmi binari creati localmente. Puoi anche rilasciare un'app istantanea tramite il canale di test interno, che applica un limite di 15 MB alle dimensioni dei moduli delle funzionalità. Solo i canali alpha e produzione applicano il limite di 15 MB.

Aggiorna risorse app

Alcune app, in particolare quelle con cronologie del codebase più lunghe, contengono risorse che i programmi binari dell'app non utilizzano più. Nella ricerca di modi per ridurre le dimensioni dei moduli della tua app, prendi in considerazione le seguenti origini comuni di codice non necessario.

Riduci le dimensioni dei file delle immagini

Puoi ridurre notevolmente le dimensioni totali dei disegnabili della tua app utilizzando il formato file WebP anziché PNG. Google Play Instant fornisce un supporto completo per WebP, inclusi trasparenza e compressione senza perdita di dati, quindi la qualità delle immagini rimane la stessa.

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.

Rimuovi le lingue inutilizzate

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

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

Rimuovere i file aggiuntivi

L'app potrebbe non utilizzare più alcune delle risorse che hai importato nel progetto. Per agevolare la rimozione di queste risorse, Android Studio esegue un controllo Lint per la situazione specifica. Per utilizzare lo strumento, procedi nel seguente modo:

  1. Premi Ctrl+Alt+Maiusc+I (Comando+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 se è possibile toglierle dalla confezione e scaricarle come file autonomi dopo che l'utente inizia a interagire. 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.

Rimuovi le librerie inutilizzate

Man mano che il suo ambito diventa più ampio, un'app 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 temporanee: librerie da cui dipendono le librerie importate dell'app.

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

Librerie esterne

La vista Progetto di Android Studio include una sezione Librerie esterne.

Questa sezione contiene tutte le librerie utilizzate dalla tua app, inclusi il codice nativo e tutte le dipendenze transitive. In questa visualizzazione, cerca raccolte non utilizzate o duplicate dall'app.

Strumento di analisi APK

Puoi utilizzare lo strumento Analizzatore APK per confrontare diverse build, incluse quelle di app istantanee.

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

<feature_module>/build.gradle

Trendy

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ù sulla riduzione delle dimensioni totali dell'importazione delle dipendenze dell'app, consulta la gestione delle dipendenze nella guida di Gradle.

Implementare la distribuzione degli asset nel cloud

Se devi ridurre ulteriormente le dimensioni, potresti dover fare affidamento sulla pubblicazione degli asset nel cloud.