Android 6.0 ti offre l'opportunità di assicurarti che le tue app funzionino con la versione successiva della piattaforma. Questa release include una serie di API e modifiche del comportamento che possono influire sulla tua app, come descritto in Panoramica delle API e Modifiche del comportamento. Durante il test della tua app con questa release, ci sono alcune modifiche di sistema specifiche su cui devi concentrarti per garantire agli utenti un'esperienza positiva.
Questa guida descrive cosa e come testare le funzionalità di Android 6.0 con la tua app. Devi dare la priorità al test di queste funzionalità specifiche, a causa del loro elevato impatto potenziale sul comportamento della tua app:
Test delle autorizzazioni
Il nuovo modello di autorizzazioni cambia il modo in cui le autorizzazioni vengono assegnate all'app dall'utente. Invece di concedere tutte le autorizzazioni durante la procedura di installazione, l'app deve chiedere all'utente le singole autorizzazioni in fase di runtime. Per gli utenti questo comportamento offre un controllo più granulare sulle attività di ogni app, nonché un contesto migliore per comprendere perché l'app richiede un'autorizzazione specifica. Gli utenti possono concedere o revocare le autorizzazioni concesse a un'app singolarmente in qualsiasi momento. Questa funzionalità della release ha maggiori probabilità di influire sul comportamento della tua app e potrebbe impedire il funzionamento di alcune funzionalità dell'app o causare il loro funzionamento in uno stato degradato.
Questa modifica interessa tutte le app in esecuzione sulla nuova piattaforma, anche quelle che non hanno come target la nuova versione della piattaforma. La piattaforma offre un comportamento di compatibilità limitato per le app legacy, ma dovresti iniziare subito a pianificare la migrazione della tua app al nuovo modello di autorizzazioni, con l'obiettivo di pubblicare una versione aggiornata dell'app al lancio ufficiale della piattaforma.
Suggerimenti per i test
Utilizza i seguenti suggerimenti per i test per pianificare ed eseguire i test della tua app con il nuovo comportamento delle autorizzazioni.
- Identifica le autorizzazioni attuali della tua app e i percorsi di codice correlati.
- Testa i flussi degli utenti tra servizi e dati protetti da autorizzazioni.
- Esegui il test con varie combinazioni di autorizzazioni concesse/revocate.
- Utilizza lo strumento
adb
per gestire le autorizzazioni dalla riga di comando:- Elenca le autorizzazioni e lo stato per gruppo:
adb shell pm list permissions -d -g
- Concedi o revoca una o più autorizzazioni utilizzando la seguente sintassi:
adb shell pm [grant|revoke] <permission.name> ...
- Elenca le autorizzazioni e lo stato per gruppo:
- Analizza la tua app per individuare i servizi che utilizzano le autorizzazioni.
Strategia di test
La modifica delle autorizzazioni influisce sulla struttura e sul design della tua app, nonché sull'esperienza utente e sui flussi che offri agli utenti. Devi valutare l'utilizzo attuale delle autorizzazioni della tua app e iniziare a pianificare i nuovi flussi che vuoi offrire. La release ufficiale della piattaforma fornisce un comportamento di compatibilità, ma ti consigliamo di pianificare l'aggiornamento dell'app e di non fare affidamento su questi comportamenti.
Identifica le autorizzazioni di cui la tua app ha effettivamente bisogno e che utilizza, quindi individua i vari percorsi di codice che utilizzano i servizi protetti da autorizzazione. Puoi farlo tramite una combinazione di test sulla nuova piattaforma e analisi del codice. Durante i test, dovresti concentrarti sull'attivazione delle autorizzazioni di runtime impostando il valore targetSdkVersion
dell'app sul livello API 23.
Esegui test con varie combinazioni di autorizzazioni revocate e aggiunte per evidenziare i flussi utente che dipendono dalle autorizzazioni. Se una dipendenza non è evidente o logica, ti consigliamo di eseguire il refactoring o suddividere il flusso per eliminare la dipendenza o chiarire il motivo per cui è necessaria l'autorizzazione.
Per ulteriori informazioni sul comportamento delle autorizzazioni di runtime, sui test e sulle best practice, consulta la pagina Utilizzo delle autorizzazioni di sistema per gli sviluppatori.
Test di Sospensione e Standby delle app
Le funzionalità di risparmio energetico di Sospensione e Sospensione app limitano la quantità di elaborazione in background che la tua app può eseguire quando un dispositivo è in stato di inattività o quando l'app non è attiva. Le restrizioni che il sistema può imporre alle app includono accesso alla rete limitato o nullo, attività in background sospese, notifiche sospese, richieste di attivazione ignorate e sveglie. Per assicurarti che la tua app funzioni correttamente con queste ottimizzazioni per il risparmio energetico, devi testarla simulando questi stati a basso consumo.
Test dell'app con Sospensione
Per testare la funzionalità Sospensione con l'app:
- Configura un dispositivo hardware o virtuale con un'immagine di sistema Android 7.0 (livello API 24).
- Collega il dispositivo alla tua macchina di sviluppo e installa l'app.
- Esegui l'app e lasciala attiva.
- Simula il passaggio del dispositivo alla modalità Sospensione eseguendo i seguenti comandi:
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- Osserva il comportamento dell'app quando il dispositivo viene riattivato. Assicurati che il recupero avvenga in modo corretto quando il dispositivo esce da Sospensione.
Test delle app con Standby delle app
Per testare la modalità App Standby con la tua app:
- Configura un dispositivo hardware o virtuale con un'immagine di sistema Android 7.0 (livello API 24).
- Collega il dispositivo alla tua macchina di sviluppo e installa l'app.
- Esegui l'app e lasciala attiva.
- Simula il passaggio dell'app in modalità standby eseguendo i seguenti comandi:
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- Simula l'attivazione dell'app utilizzando il seguente comando:
$ adb shell am set-idle <packageName> false
- Osserva il comportamento dell'app quando viene risvegliata. Assicurati che torni correttamente dalla modalità standby. In particolare, devi verificare se le notifiche e i job in background della tua app continuano a funzionare come previsto.
Backup automatico per app e identificatori specifici del dispositivo
Se nella memoria interna dell'app vengono mantenuti gli identificatori specifici del dispositivo, ad esempio l'ID di registrazione di Google Cloud Messaging, assicurati di seguire le best practice per escludere la posizione di archiviazione dal backup automatico, come descritto in Effettuare il backup dei dati utente con il backup automatico.