Ridurre le dimensioni dell'app

Le dimensioni ridotte delle app sono direttamente correlate al successo dei download, in particolare nei mercati emergenti con connessioni di dispositivi di rete scarse o velocità di rete basse. Ciò può comportare tassi di utilizzo delle app inferiori, che a loro volta riducono l'ambito e la copertura del pubblico. Tuttavia, esistono diversi modi per ridurre le dimensioni dell'app.

Best practice

Carica l'app come Android App Bundle

Il modo più semplice per risparmiare immediato sulle dimensioni dell'app durante la pubblicazione su Google Play consiste nel caricare l'app come Android App Bundle, ovvero un nuovo formato di pubblicazione che include tutte le risorse e il codice compilato dell'app, oltre a supportare la generazione di APK e l'accesso a Google Play.

Riduci le dimensioni del codice di runtime

Verifica la presenza di codice che la tua app non utilizza in fase di runtime, ad esempio classi di grandi dimensioni o codice generato automaticamente. Ottimizzatori di codice come R8 possono aiutare a ottimizzare e ridurre le dimensioni del codice, ma non sono in grado di gestire il codice protetto da costanti di runtime. Sostituisci i flag di controllo con costanti in tempo di compilazione per utilizzare al meglio i vari strumenti di ottimizzazione. Puoi attivare la contrazione di codice e risorse nel file di configurazione Gradle:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Rimuovi i layout non necessari

Unisci i layout inutilizzati con piccole modifiche all'interfaccia utente e rimuovi eventuali layout non necessari per ridurre le dimensioni complessive del codice dell'app. Inoltre, se possibile, puoi eseguire il rendering dinamico di layout e visualizzazioni. In questo modo puoi evitare di tracciare modelli statici e applicare layout alternativi senza costi tecnici.

Rivaluta le funzionalità usate raramente

Ottimizza in particolare per Android Go, disattivando le funzionalità con un numero basso di metriche relative agli utenti attivi giornalieri (DAU). Alcuni esempi includono la rimozione di animazioni complesse, file GIF di grandi dimensioni o qualsiasi altra aggiunta estetica non necessaria per il successo dell'app.

Utilizza la pubblicazione dinamica

Play Feature Delivery utilizza funzionalità avanzate degli app bundle, consentendo di distribuire determinate funzionalità della tua app in modo condizionale o on demand. Puoi usare i moduli delle caratteristiche per la distribuzione personalizzata. Un vantaggio esclusivo dei moduli delle funzionalità è la possibilità di personalizzare come e quando le diverse funzionalità della tua app vengono scaricate su dispositivi con Android 5.0 (livello API 21) o versioni successive.

Riduci le dimensioni della stringa traducibile

Puoi utilizzare la proprietà Android Gradle resConfigs per rimuovere i file di risorse alternative non necessari per la tua app. Se utilizzi una libreria che include risorse di lingua (ad esempio AppCompat o Google Play Services), la tua app include tutte le stringhe di lingua tradotte per i messaggi della biblioteca, indipendentemente dalla traduzione dell'app. Se vuoi mantenere solo le lingue supportate ufficialmente dalla tua app, puoi specificare le lingue utilizzando la proprietà resConfig. Tutte le risorse per le lingue non specificate vengono rimosse.

Per limitare le risorse linguistiche solo all'inglese e al francese, puoi modificare defaultConfig come mostrato di seguito:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Usa una traduzione selettiva

Se una determinata stringa non è visibile nell'interfaccia utente dell'app, non è necessario tradurla. Le stringhe a scopo di debug, messaggi di eccezione o URL devono essere valori letterali stringa nel codice, non nelle risorse.

Ad esempio, non devi tradurre gli URL.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Potresti riconoscere &lt; e &gt, poiché si tratta di caratteri di escape per < e >. Sono necessarie perché, se inserisci un tag <a> all'interno di un tag <string>, il compilatore di risorse Android le elimina poiché non riconosce il tag. Ciò significa che stai traducendo i tag HTML e l'URL in 78 lingue. Puoi però rimuovere il codice HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Combinare programmi binari nativi con dipendenze comuni

Se la tua app ha implementazioni JNI (Java Native Interface) diverse con dipendenze sottostanti comuni, significa che i vari programmi binari aumentano le dimensioni dell'APK con componenti ridondanti. Puoi combinare diversi programmi binari JNI in un unico file binario JNI mantenendo separati i file Java e JNI. Questa operazione può ridurre drasticamente le dimensioni dell'APK.