Funzionalità del dispositivo per miliardi

Raggiungere nuovi utenti significa supportare una gamma sempre maggiore di versioni della piattaforma Android e specifiche dei dispositivi. Per migliorare l'esperienza utente, esegui l'ottimizzazione in base alle configurazioni RAM e alle dimensioni e alle risoluzioni degli schermi più comuni.

Supporta schermi di diverse dimensioni

La tua app può offrire un'esperienza utente migliore a miliardi di utenti se supporta schermi di varie dimensioni e risoluzioni. In questa sezione vengono descritti alcuni modi per eseguire questa operazione.

Utilizza pixel indipendenti dalla densità (dp)

  • La definizione di dimensioni di layout con pixel non funziona bene perché schermi diversi hanno densità di pixel diverse, pertanto lo stesso numero di pixel può corrispondere a dimensioni fisiche diverse su dispositivi diversi.
  • Per superare questo problema, Android supporta il pixel indipendente dalla densità (dp), che corrisponde alle dimensioni fisiche di un pixel a 160 punti per pollice (densità mdpi).
  • La definizione di layout con dp garantisce che le dimensioni fisiche dell'interfaccia utente siano coerenti indipendentemente dal dispositivo. Consulta la guida per Android sul supporto di più schermi per conoscere le best practice sull'utilizzo di pixel indipendenti dalla densità.

Testa testo e grafica sulle densità schermo ldpi e mdpi

  • Esegui dei test per assicurarti che testo e grafica funzionino bene su schermi a bassa e media densità (ldpi e mdpi), poiché si tratta di densità comuni, soprattutto sui dispositivi a basso costo. Cerca testo che potrebbe essere poco chiaro sugli schermi a bassa densità, dove i dettagli non sono visibili.
  • I dispositivi con schermi a bassa densità tendono ad avere specifiche hardware inferiori. Per assicurarti che la tua app funzioni correttamente su questi dispositivi, valuta la possibilità di ridurre o eliminare i carichi di elaborazione pesanti dell'elaborazione grafica, come animazioni e transizioni.
  • Per ulteriori informazioni sul supporto di densità diverse, consulta il corso di formazione per Android sul supporto delle diverse densità.

Testa i layout su schermi di piccole e medie dimensioni

  • Verifica che i layout vengano ridimensionati eseguendo test su schermi più piccoli. Man mano che le dimensioni degli schermi si riducono, sii molto selettivo riguardo agli elementi visibili dell'interfaccia utente, perché lo spazio a disposizione è limitato.
  • Le linee guida di Material Design descrivono metriche e linee chiave per garantire che i tuoi layout possano essere ridimensionati in base alle densità dello schermo.
  • Per ulteriori informazioni sul supporto di diverse dimensioni dello schermo, consulta il corso di formazione Android sul supporto di diverse dimensioni degli schermi.

Fornire compatibilità con le versioni precedenti

È possibile che non tutti i tuoi utenti utilizzino dispositivi con la versione migliore e più recente della piattaforma Android. Ecco alcuni modi per migliorare la compatibilità con le versioni precedenti per rendere la tua app disponibile al maggior numero di persone possibile.

Imposta targetSdkVersion e minSdkVersion in modo appropriato

  • Le app devono sviluppare e avere come target la versione più recente di Android per garantire il comportamento più recente su una vasta gamma di dispositivi; ciò garantisce comunque la compatibilità con le versioni precedenti. Di seguito sono riportate le best practice per il corretto targeting dei livelli API:
    • targetSdkVersion deve essere la versione più recente di Android. Il targeting della versione più recente garantisce che la tua app erediti i comportamenti di runtime più recenti durante l'esecuzione di versioni più recenti di Android. Assicurati di testare la tua app su versioni di Android più recenti durante l'aggiornamento di targetSdkVersion, poiché questo potrebbe influire sul comportamento dell'app.
    • minSdkVersion Consente di impostare la versione minima di Android supportata. La configurazione di minSdkVersion comporta anche la segnalazione dell'utilizzo errato di nuove API che potrebbero non essere disponibili nelle versioni precedenti della piattaforma negli strumenti di creazione di Android. In questo modo, non puoi compromettere inavvertitamente la compatibilità con le versioni precedenti.
  • Consulta le dashboard di Android, la Console per gli sviluppatori di Google Play per la tua app e le ricerche di settore nei tuoi mercati target per valutare quali versioni di Android scegliere come target in base agli utenti target.

Utilizzare le librerie di supporto Android

  • Assicurati che la tua app fornisca un'esperienza coerente tra le diverse versioni del sistema operativo utilizzando la libreria di supporto Android. Questa libreria fornisce versioni compatibili con le versioni precedenti delle API del framework Android, nonché funzionalità disponibili solo tramite le API della libreria come AppCompatActivity e la libreria di supporto di Material Design.
  • Ecco alcune delle caratteristiche principali:
  • Per ulteriori informazioni sulle librerie di supporto disponibili, consulta la sezione Funzionalità delle librerie di assistenza sul sito per gli sviluppatori Android.

Utilizzare Google Play Services

  • Google Play Services offre il meglio delle API di Google indipendentemente dalla versione della piattaforma Android. Valuta la possibilità di utilizzare le funzionalità di Google Play Services per offrire un'esperienza Google più semplice sui dispositivi Android.
  • Google Play Services include anche API utili come GcmNetworkManager, che fornisce gran parte dell'API JobScheduler di Android 5.0 per le versioni precedenti di Android.
  • Gli aggiornamenti a Google Play Services vengono distribuiti automaticamente dal Google Play Store e le nuove versioni della libreria client vengono pubblicate tramite Android SDK Manager.

Utilizzare la memoria in modo efficiente

La memoria è un elemento imprescindibile dell'esperienza utente. Una buona gestione della memoria può rendere la tua app più stabile e più efficiente; in alcuni casi, il suo utilizzo efficace potrebbe essere l'unica cosa che rende la tua app utilizzabile. Di seguito sono riportati alcuni modi per aiutare la tua app a utilizzare la memoria in modo più efficiente.

Riduci l'utilizzo di memoria sui dispositivi a basso costo

  • Modifica l'ingombro della memoria in modo dinamico per garantire la compatibilità tra dispositivi con configurazioni RAM diverse.
  • Metodi come isLowRamDevice() e getMemoryClass() aiutano a determinare i vincoli di memoria in fase di runtime. In base a queste informazioni, puoi fare lo scale down dell'utilizzo della memoria. Ad esempio, puoi utilizzare immagini a risoluzione più bassa su dispositivi con poca memoria.
  • Per ulteriori informazioni sulla gestione della memoria dell'app, consulta il corso di formazione Android sulla gestione della memoria dell'app.

Evitare processi a lunga esecuzione

  • I processi di lunga durata rimangono memorizzati nella memoria e possono rallentare il dispositivo. Nella maggior parte dei casi, l'app dovrebbe attivarsi per un determinato evento, elaborare dati e arrestarsi. Dovresti utilizzare Firebase Cloud Messaging (FCM) e GcmNetworkManager per evitare la lunga esecuzione dei servizi in background e ridurre la pressione della memoria sul dispositivo dell'utente.

Utilizzo benchmark della memoria

Android Studio offre strumenti di profilazione e benchmarking della memoria, che ti consentono di misurare l'utilizzo della memoria in fase di esecuzione. Il benchmarking relativo all'utilizzo della memoria per la tua app ti consente di monitorare l'utilizzo della memoria in più versioni dell'app. Questo può aiutarti a rilevare l'aumento involontario dell'utilizzo della memoria. Utilizza lo strumento Memory Profiler per eseguire le seguenti operazioni:

  • Scopri se i pattern di eventi di garbage collection (GC) indesiderati potrebbero causare problemi di prestazioni.
  • Identifica i tipi di oggetti che vengono allocati o rimangono allocati in modo imprevisto o inutilmente.
  • Identifica in quale punto del codice potrebbe trovarsi il problema.

Per maggiori informazioni sull'utilizzo della memoria di benchmarking, consulta Visualizzare l'heap e le allocazioni con il Profiler di memoria.

Ottimizza per i dispositivi con Android Go

Android Go è un'esperienza ottimizzata per i dispositivi base con ≤ 1 GB di RAM, a partire da Android Oreo (Go Edition). Per assicurarti che la tua app funzioni perfettamente sui dispositivi Android Go, dovresti tenere conto delle seguenti linee guida:

  • targetSdkVersion deve essere la versione più recente di Android. I dispositivi Android Go hanno solo il sistema operativo Android Oreo (API 27 o versioni successive).
  • L'app dovrebbe funzionare senza problemi su dispositivi con almeno 1 GB di RAM. Tieni presente le ottimizzazioni della memoria elencate in Utilizzare la memoria in modo efficiente qui sopra e utilizza Android vitals per identificare e correggere comportamenti dannosi come rendering lento e frame bloccati.
  • La funzionalità Picture in picture (PIP) potrebbe essere disattivata sui dispositivi. Prima che la tua app utilizzi la funzionalità PIP, verifica che sia disponibile chiamando il numero hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE).
  • Le dimensioni dell'app sul dispositivo devono essere inferiori a 40 MB.
  • Le dimensioni del set proporzionale (PSS) dell'utilizzo della RAM dell'app non devono superare i 90 MB. Per i giochi, la dimensione PSS dell'utilizzo della RAM del gioco non deve superare i 150 MB. Per ulteriori informazioni su PSS, consulta la guida Esaminare l'utilizzo della RAM.
  • Il tempo di avvio dell'app deve essere minimo e inferiore a 5 secondi.
  • L'opzione SYSTEM_ALERT_WINDOW (che consente alle app di disegnare una finestra sopra altre app) potrebbe essere disattivata sui dispositivi Android Go con poca RAM. Prima di bloccare altre app, controlla se l'app ha questa autorizzazione chiamando Settings.canDrawOverlays(). Se l'app non riesce a ottenere l'autorizzazione, esegui una riduzione del livello della tua app in modo che l'utente possa continuare a utilizzarla, magari disattivando la funzionalità che richiede l'autorizzazione SYSTEM_ALERT_WINDOW.

Consigliamo alla maggior parte degli sviluppatori di ottimizzare la propria app esistente, che sarà disponibile su tutti i dispositivi Android Go, perché rendere l'esecuzione dell'app più veloce e leggera andrà a vantaggio di tutto il pubblico. Puoi usare la funzionalità di APK multipli su Play Console per distribuire un APK specifico per i dispositivi Android Go, ma devi farlo senza compromettere l'esperienza (ad esempio, non rimuovere funzionalità). L'APK che ha come target i dispositivi Android Go deve dichiarare <uses-feature android:name="android.hardware.ram.low" android:required="true">, avere come target almeno il livello API 26 e avere un codice versione superiore rispetto all'APK non Go.

Risorse aggiuntive

Per ulteriori informazioni sul supporto di una varietà di dispositivi, consulta la seguente risorsa:

Post del blog