il successo a lungo termine della tua app in termini di numero di installazioni e recensioni degli utenti, coinvolgimento e fidelizzazione.
Per fornire una base solida per un'app di qualità, segui le norme sulla qualità principali delle app.
Le linee guida definiscono la qualità minima che tutte le app devono soddisfare.
Qualità adattiva dell'app
Le app per Android funzionano su un'ampia gamma di dispositivi, dagli smartphone compatti a tablet, pieghevoli, computer, display connessi, sistemi di infotainment per auto, TV e XR. Le modalità di visualizzazione a finestre, come lo schermo diviso e le finestre delle app, consentono alle app di essere eseguite in porzioni ridimensionabili di uno schermo.
Segui le norme sulla qualità adattiva delle app, insieme a quelle sulla qualità principali delle app, per:
- Creare app ottimizzate per tutti i fattori di forma e le dimensioni di visualizzazione
- Migliorare il ranking delle tue app nelle schede e nella ricerca di Google Play
- Acquisire più utenti e aumentare la fidelizzazione degli utenti
Linee guida
Le seguenti linee guida di base ti aiutano a creare un'app di base di alta qualità.
Esperienza utente
La tua app deve fornire un design visivo e sequenze di interazione standard Android per un'esperienza utente coerente e intuitiva.
Utilizza i componenti Material Design per creare l'interfaccia utente della tua app al posto dei componenti della piattaforma Android, ove possibile. Material Design offre un aspetto moderno di Android e un'interfaccia utente coerente tra le varie versioni di Android.
| ID | Test | Descrizione |
|---|---|---|
| Usabilità | ||
| Usabilità:UX | T-Usability:Core, T-SD-Card |
L'app offre un'esperienza utente coerente per tutti i casi d'uso dell'app su tutti i fattori di forma. |
| Usabilità:Switcher | T-Usability:Switcher, T-SD-Card |
L'app passa in background quando lo stato attivo passa a un'altra app. L'app torna in primo piano quando viene riattivata dal selettore di app Recenti. |
| Usabilità:sonno | T-Usability:Sleep, T-SD-Card |
Quando l'app è in primo piano, si mette in pausa quando il dispositivo entra in modalità di sospensione e riprende quando il dispositivo si riattiva. |
| Usabilità:serratura | T-Usability:Lock, T-SD-Card |
Quando l'app è in primo piano, si mette in pausa quando il dispositivo è bloccato e riprende quando il dispositivo è sbloccato. |
| Interfaccia utente | ||
| UI:Parity | T-UI:Transitions |
Gli orientamenti del display e gli stati di chiusura espongono essenzialmente le stesse funzionalità e azioni e preservano la parità funzionale. |
| UI:Fullscreen | T-UI:Transitions |
L'app riempie la finestra dell'app in entrambi gli orientamenti e non presenta barre nere a causa delle modifiche alla configurazione, tra cui la chiusura e l'apertura del dispositivo. È accettabile un letterbox leggero per compensare piccole variazioni nella geometria dello schermo. |
| UI:Transitions | T-UI:Transitions | L'app gestisce le transizioni rapide tra gli orientamenti del display e la chiusura e l'apertura del dispositivo senza problemi di rendering del display e senza perdere lo stato. |
| Qualità visiva | ||
| Visual:Display | T-Visual:Display |
L'app mostra grafica, testo, immagini e altri elementi UI senza distorsioni, sfocature o pixelizzazioni evidenti.
|
| Visuale:leggibilità | T-Visual:Readability | L'app garantisce la leggibilità del testo e dei blocchi di testo limitando la lunghezza delle righe a 45-75 caratteri (spazi inclusi) per ciascuna delle lingue supportate dall'app. |
| Elemento visivo:Temi | T-Visual:temi | I contenuti dell'app e tutti i contenuti web a cui accede l'app supportano sia il tema chiaro sia quello scuro. |
| Navigazione | ||
| Nav:BackButton | T-Nav:Back | L'app supporta la navigazione con il pulsante Indietro standard e non utilizza prompt personalizzati per il pulsante Indietro sullo schermo. |
| Nav:BackGesture | T-Nav:Back | L'app supporta la navigazione tramite gesti per tornare indietro e andare alla schermata Home. |
| Nav:State | T-Nav:State, T-Nav:Back |
L'app mantiene lo stato dell'utente o dell'app quando non è più in primo piano e impedisce la perdita accidentale di dati a causa della navigazione a ritroso e di altre modifiche dello stato. Quando torna in primo piano, l'app ripristina lo stato salvato e tutte le transazioni stateful in attesa. Ad esempio, modifiche a campi modificabili, progressi di gioco, menu, video e altre sezioni dell'app.
|
| Notifiche | ||
| Notifica:Info | T-Notify:Info |
Le notifiche forniscono informazioni pertinenti relative alla tua app.
|
| Notifica:Messaggistica | T-Notify:Info |
Per app di messaggistica, app social e conversazioni:
|
| Accessibilità | ||
| Accesso:Target | T-Access:Targets | I touch target sono almeno 48 dp. Consulta le linee guida di Material Design su layout e tipografia. |
| Accesso:Contrasto | T-Access:Contrast |
Il testo dell'app e i contenuti in primo piano mantengono i seguenti rapporti di contrasto con lo sfondo dell'app:
Scopri di più su colore e contrasto. |
| Accesso:Descrizione | T-Access:Description | Descrivi ogni elemento UI,
tranne TextView, utilizzando contentDescription. |
Funzionalità
La tua app deve implementare il seguente comportamento funzionale.
| ID | Test | Descrizione |
|---|---|---|
| Audio | ||
| Audio:Init | T-Audio:Init |
Quando l'utente avvia la riproduzione audio, l'app deve eseguire una delle seguenti operazioni entro un secondo:
|
| Audio:Focus | T-Audio:Focus | L'app deve richiedere la messa a fuoco dell'audio quando inizia la riproduzione dell'audio e abbandonarla quando la riproduzione si interrompe. |
| Audio:Interrompi | T-Audio:Interrupt | L'app deve gestire le richieste di focus audio di altre app. Ad esempio, un'app potrebbe ridurre il volume di riproduzione quando un'altra app riproduce un discorso. |
| Audio:Background | T-Audio:Background | L'app deve supportare la riproduzione in background. |
| Audio:Notifica | T-Audio:Notification | Quando l'app riproduce audio in background, deve creare una notifica con lo stile MediaStyle. |
| Audio:Riprendi | T-Audio:Resume | Se l'app è in background e l'audio è in pausa, l'audio riprende quando l'app torna in primo piano oppure l'app deve indicare all'utente che la riproduzione è in pausa. |
| Video | ||
| Video:PIP | T-Video:PiP | Se l'app riproduce video, deve supportare la riproduzione in modalità Picture in picture. |
| Video:Encoding | T-Video:Encoding | Se l'app codifica video, deve farlo utilizzando lo standard di compressione video HEVC. |
| Condivisione | ||
| Condivisione:Sheet | T-Sharing:Sheet | L'app deve utilizzare il foglio di condivisione di Android quando condivide contenuti. L'app può suggerire target non disponibili per le soluzioni personalizzate. |
| Servizi in background | ||
| Background:Services | T-Background:Services |
L'app evita di eseguire servizi inutilmente lunghi in background. Per garantire il corretto funzionamento del dispositivo dell'utente. Nota:il sistema applica varie limitazioni ai servizi in background. Di seguito sono riportati alcuni utilizzi impropri dei servizi in background:
Per saperne di più, consulta la panoramica delle attività in background. |
Prestazioni e stabilità
La tua app deve fornire prestazioni, stabilità, compatibilità e reattività ottimali.
| ID | Test | Descrizione |
|---|---|---|
| Prestazioni | ||
| Rendimento:avvio | T- Performance:Startup | L'app si carica rapidamente o fornisce un feedback sullo schermo all'utente (un indicatore di avanzamento o un segnale simile) se l'app impiega più di due secondi per caricarsi. |
| Rendimento:FPS | T-Performance:FPS | L'app esegue il rendering dei frame ogni 16 (o meno) millisecondi per visualizzare almeno 60 frame al secondo. Per assistenza in caso di problemi di rendering, vedi Rendering lento. |
| Rendimento:rigoroso | T-Performance:Strict | Se l'opzione StrictMode è attivata (vedi la sezione relativa ai test StrictMode), non sono visibili flash rossi (avvisi sul rendimento di StrictMode) durante il test dell'app. |
| Stabilità | ||
| Stabilità:ANR | T-Stability:ANR | L'app non va in arresto anomalo né blocca il thread dell'interfaccia utente causando errori ANR (Android Not Responding). Utilizza il report pre-lancio di Google Play per identificare potenziali problemi di stabilità. Dopo il deployment, monitora la pagina Android vitals nella console Google Play. |
| SDK | ||
| SDK:Platform | T-SDK:Platform | L'app viene eseguita sull'ultima versione pubblica della piattaforma Android senza arresti anomali o gravi ripercussioni sulle funzionalità principali. |
| SDK:Target | T-SDK:Latest | L'app ha come target l'ultimo SDK Android necessario per rispettare i requisiti di Google Play impostando il valore targetSdk nel file build.gradle del modulo dell'app. |
| SDK:Compile | T-SDK:Latest | L'app è creata con l'ultimo SDK Android impostando il valore compileSdk nel file build.gradle del modulo dell'app. |
| SDK:3P | T-SDK:3P, T-SDK:Non |
Tutti gli SDK di Google o di terze parti utilizzati sono aggiornati. Eventuali miglioramenti a questi SDK relativi a stabilità, compatibilità o sicurezza devono essere disponibili per gli utenti in modo tempestivo. Per gli SDK Google, utilizza gli SDK basati su Google Play Services, se disponibili. Questi SDK sono compatibili con le versioni precedenti, ricevono aggiornamenti automatici, riducono le dimensioni del pacchetto dell'app e utilizzano in modo efficiente le risorse sul dispositivo. |
| SDK:Non | T-SDK:Non | L'app non utilizza interfacce non SDK. |
| SDK:Debug | T-SDK:Debug | Nell'app di produzione non sono incluse librerie di debug. Le librerie di debug incluse nell'app possono causare problemi di prestazioni e di sicurezza. |
| Batteria | ||
| Batteria:gestisci | T-Battery:Manage |
L'app supporta correttamente le funzionalità di gestione dell'alimentazione Sospensione e standby delle app. Le app possono richiedere un'esenzione dalla manutenzione dell'alimentazione. Consulta la sezione Supporto per altri casi d'uso in Ottimizzare per la sospensione e lo standby app. |
Privacy e sicurezza
L'app gestisce i dati utente e le informazioni personali in modo sicuro e fornisce livelli di autorizzazione appropriati.
Le applicazioni pubblicate sul Google Play Store devono rispettare anche le norme relative ai dati utente di Google Play per proteggere la privacy degli utenti.
| ID | Test | Descrizione |
|---|---|---|
| Autorizzazioni | ||
| Autorizzazioni:min | T-Permissions:Min | L'app richiede solo le autorizzazioni minime necessarie per supportare il caso d'uso attuale. Per alcune autorizzazioni, come la posizione, l'app utilizza una specifica grossolana anziché precisa, se possibile. Consulta la sezione Ridurre al minimo le richieste di autorizzazione. |
| Autorizzazioni:sensibili | T-Permissions:Sensitive |
L'app richiede l'autorizzazione ad accedere a dati sensibili (ad esempio gruppi di autorizzazioni SMS o Registro chiamate o posizione) o a servizi a pagamento (ad esempio Dialer o SMS) solo se direttamente correlati ai casi d'uso principali dell'app. Le implicazioni relative a queste autorizzazioni devono essere comunicate all'utente in modo ben visibile. A seconda di come la tua app utilizza le autorizzazioni, potrebbe essere possibile un modo alternativo per soddisfare il caso d'uso dell'app senza fare affidamento sull'accesso a informazioni sensibili. Ad esempio, anziché richiedere autorizzazioni relative ai contatti di un utente, utilizza un intent implicito per richiedere l'accesso. |
| Autorizzazioni:runtime | T-Permissions:Runtime | L'app richiede le autorizzazioni di runtime quando viene richiesta la funzionalità, anziché durante l'avvio dell'app. |
| Autorizzazioni:spiega | T-Permissions:Explain | L'app spiega chiaramente perché sono necessarie le autorizzazioni. |
| Autorizzazioni:Degrade | T-Permissions:Degrade | L'app applica la riduzione controllata quando gli utenti negano o revocano un'autorizzazione. L'app non deve impedire del tutto l'accesso dell'utente. |
| Dati e file | ||
| Data:Sensitive | T-Data:Sensitive, T-Data:Handling |
Tutti i dati sensibili sono archiviati nella memoria interna dell'app. |
| Dati:Log | T-Data:Log | Nessun dato utente personale o sensibile viene registrato nel log di sistema o in un log specifico dell'app. |
| Dati:ID | T-Data:IDs | L'app non utilizza ID hardware non reimpostabili, come l'IMEI, a scopo di identificazione. |
| Identità | ||
| Identity:Hints | T-Identity:Hints | L'app fornisce suggerimenti per la compilazione automatica delle credenziali dell'account e di altre informazioni sensibili, come i dati della carta di credito, l'indirizzo fisico e il numero di telefono. |
| Identità:CredMan | T-Identity:CredMan | L'app integra Gestore delle credenziali per Android per un'esperienza di accesso fluida che unifica il supporto per le passkey, l'identità federata e le password. |
| Identità:Bio | T-Identity:Bio | L'app supporta l'autenticazione biometrica per proteggere le transazioni finanziarie o le informazioni sensibili, come i documenti importanti dell'utente. |
| Componenti app | ||
| Componenti:esportazione | T-Components:Export |
L'app imposta l'attributo Vengono esportati solo i componenti dell'applicazione che condividono dati con altre app o che devono essere richiamati da altre app. |
| Componenti:autorizzazioni | T-Components:Permissions |
Tutti gli intent e le trasmissioni seguono le best practice:
|
| Componenti:Protezione | T-Components:Protection |
Tutti i componenti che condividono contenuti tra le app utilizzano Le app non devono fare affidamento sull'accesso a un elenco di pacchetti installati. |
| Reti | ||
| Rete:Traffico | T-Network:Traffic | Tutto il traffico di rete viene inviato tramite SSL. |
| Network:Config | T-Network:Config | L'app dichiara una configurazione di sicurezza di rete. |
| Network:Play | T-Network:Play | Se l'app utilizza Google Play Services, il fornitore di sicurezza viene inizializzato all'avvio dell'applicazione. |
| WebView | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
Non utilizzare setAllowUniversalAccessFromFileURLs() per accedere ai contenuti locali. Utilizza invece WebViewAssetLoader. |
| WebView:JavaScript | T-WebViews:JavaScript, T-WebViews:Nav |
I componenti WebView non utilizzano Su Android 6.0 (livello API 23 e versioni successive), utilizza invece i canali di messaggi HTML. |
| Esecuzione | ||
| Esecuzione:bundle | T-Execution:Bundles |
L'app non carica dinamicamente codice dall'esterno dell'APK dell'app. Utilizza gli Android App Bundle, che includono Play Feature Delivery e Play Asset Delivery. A partire da agosto 2021, l'utilizzo degli Android App Bundle è obbligatorio per tutte le nuove app nel Google Play Store. |
| Crittografia | ||
| Crypto:Algorithms | T-Crypto:Algorithms | L'app utilizza stringhe, algoritmi crittografici forniti dalla piattaforma e un generatore di numeri casuali. Inoltre, l'app non implementa algoritmi personalizzati. |
Google Play
Consenti la pubblicazione della tua app su Google Play.
| ID | Test | Descrizione | |
|---|---|---|---|
| Norme | |||
| Play:Policies | T-Play:Norme | L'app rispetta rigorosamente i termini delle Norme relative ai contenuti per gli sviluppatori di Google Play, non offre contenuti inappropriati e non utilizza la proprietà intellettuale o il brand di altri. | |
| Play:Maturità | T-Play:Norme | Il livello di maturità dell'app è impostato in modo appropriato in base alle linee guida per la classificazione dei contenuti. | |
| Pagina dei dettagli dell'app | |||
| Play:Graphics | T-Play:Graphics, T-Play:Assets |
La grafica della funzionalità dell'app segue le linee guida descritte in questo articolo del Centro assistenza. Assicurati che:
|
|
| Play:NonAndroid | T-Play:Assets | Gli screenshot e i video dell'app non mostrano né fanno riferimento a dispositivi non Android. | |
| Play:Misleading | T-Play:Assets | Gli screenshot o i video dell'app non rappresentano in modo fuorviante i contenuti e l'esperienza della tua app. | |
| Assistenza utenti | |||
| Play:Bugs | T-Play:Norme | I bug comuni segnalati dagli utenti nella scheda Recensioni della pagina Google Play vengono risolti se sono riproducibili e si verificano su molti dispositivi diversi. Se si verifica un bug solo su alcuni dispositivi, devi comunque risolverlo se questi dispositivi sono particolarmente popolari o nuovi. | |
Ambiente di test
Configura un ambiente di test come segue:
Test dell'emulatore:l'emulatore Android è un ottimo modo per testare la tua app con diverse versioni di Android e risoluzioni dello schermo. Configura dispositivi emulati (AVD) per rappresentare le combinazioni di hardware/software e i fattori di forma più comuni per la tua base utenti di destinazione. Prova una serie di fattori di forma utilizzando i seguenti emulatori (almeno):
- Dispositivi pieghevoli: 7,6" con display esterno (elencato in Smartphone in AVD Manager)
- Tablet: Pixel C 9,94" (2560 px x 1800 px)
- Test delle notifiche delle app mobile: accoppia un dispositivo mobile / emulatore con l'emulatore Wear OS: Wear OS Round 1,84"
Dispositivi hardware:l'ambiente di test deve includere un numero ridotto di dispositivi hardware reali che rappresentino i principali fattori di forma e le combinazioni hardware/software disponibili per i consumatori. Non devi eseguire il test su ogni� dispositivo disponibile sul mercato. Concentrati su un numero ridotto di dispositivi rappresentativi, anche utilizzando uno o due dispositivi per fattore di forma.
Laboratori di test dei dispositivi:puoi anche utilizzare servizi di terze parti, come Firebase Test Lab, per testare la tua app su un'ampia gamma di dispositivi.
Test con l'ultima versione di Android:oltre a testare le versioni di Android rappresentative per la tua base utenti di riferimento, devi sempre eseguire test con l'ultima versione di Android per assicurarti che le modifiche al comportamento più recenti non influiscano negativamente sull'esperienza utente della tua app.
Per ulteriori indicazioni sui test, inclusi test unitari, test di integrazione e test dell'interfaccia utente, consulta Principi di base dei test delle app per Android.
StrictMode
Per i test delle prestazioni, attiva StrictMode nella tua app. Utilizza StrictMode per rilevare le operazioni che potrebbero influire sulle prestazioni, sugli accessi alla rete e sulle letture e scritture dei file. Cerca operazioni potenzialmente problematiche sia sul thread principale sia su altri thread.
Configura un criterio di monitoraggio per thread utilizzando StrictMode.ThreadPolicy.Builder e attiva tutto il monitoraggio supportato in
ThreadPolicy utilizzando detectAll().
Attiva la notifica visiva delle violazioni delle norme per ThreadPolicy utilizzando
penaltyFlashScreen().
Test
I test di qualità principali dell'app ti aiutano a valutare la qualità fondamentale della tua app. Puoi combinare i test o integrare gruppi di test nel tuo piano di test.
Esperienza utente
| ID | Funzionalità | Descrizione |
|---|---|---|
| Usabilità | ||
| T-Usability:Core | Usabilità:UX |
Naviga in tutte le parti dell'app: tutte le schermate, le finestre di dialogo, le impostazioni e tutti i flussi utente. Procedi nel seguente modo:
|
| T-Usability:Switcher | Usabilità:selettore | Da ogni schermata dell'app, passa a un'altra app in esecuzione, quindi torna all'app in fase di test utilizzando il selettore di app Recenti. |
| T-Usability:Sleep | Usabilità:sonno | Premi il tasto di accensione per mettere il dispositivo in modalità di sospensione, quindi premilo di nuovo per riattivare lo schermo. |
| T-Usability:Lock | Usabilità:blocco | Configura un blocco schermo sul dispositivo. Premi il tasto di accensione per mettere il dispositivo in sospensione (e bloccarlo). Quindi, premi di nuovo il tasto di accensione per riattivare lo schermo e sbloccare il dispositivo. |
| Scheda SD | ||
| T-SD-Card | Usabilità:UX |
Esegui test della funzionalità di base con l'app installata sulla scheda SD del dispositivo (se l'app supporta questo metodo di installazione). Per spostare l'app su una scheda SD, consulta le Impostazioni dell'app. |
| Interfaccia utente | ||
| T-UI:Transitions | UI:Parità, UI:Schermo intero, UI:Transizioni |
Da ogni schermata dell'app, ruota il dispositivo tra l'orientamento orizzontale e verticale e tra lo stato chiuso e aperto almeno tre volte. Verifica che l'app faccia quanto segue:
|
| Qualità visiva | ||
| T-Visual:Display | Visuale:display | Utilizza tutte le funzionalità dell'app. Verifica che tutti gli elementi visivi, inclusi grafica, testo, immagini e altri elementi dell'interfaccia utente, non presentino distorsioni, sfocature o pixelizzazione. |
| T-Visual:Readability | Aspetto visivo:leggibilità |
Esamina tutti i blocchi di testo nell'app. Verifica che la lunghezza della riga di testo e del blocco di testo sia limitata a 45-75 caratteri (inclusi gli spazi) per una migliore leggibilità. Verifica quanto segue:
|
| T-Visual:Themes | Elemento visivo:temi | Verifica che tutto il testo sia leggibile nei temi chiaro e scuro. Verifica che tutti gli elementi visivi siano chiaramente distinguibili ed esteticamente gradevoli nei temi chiaro e scuro. |
| Navigazione | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
Naviga in tutte le parti dell'app: tutte le schermate, le finestre di dialogo, le impostazioni e tutti i flussi utente. Da ogni schermata dell'app, premi il pulsante Indietro o utilizza il gesto di scorrimento indietro. L'app dovrebbe passare alla schermata precedente o alla schermata Home. |
| T-Nav:State | Nav:State | Da ogni schermata dell'app, premi il tasto Home del dispositivo o scorri verso l'alto nella navigazione tramite gesti, quindi riavvia l'app dalla schermata Tutte le app. |
| Notifiche | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
Attiva e osserva nel riquadro delle notifiche tutti i tipi di notifiche che l'app può visualizzare. Espandi le notifiche, se applicabile (Android 4.1 e versioni successive), e tocca tutte le azioni disponibili. |
| Accessibilità | ||
| T-Access:Targets | Accesso:target | Verifica che i target di tocco mantengano dimensioni e posizione coerenti e accessibili per tutte le dimensioni e le configurazioni del display. Per informazioni sull'accessibilità, consulta Accessibility Scanner. |
| T-Access:Contrast | Accesso:Contrasto | Verifica il contrasto di tutti gli elementi visivi. |
| T-Access:Description | Access:Description | Verifica che tutti gli elementi UI, ad eccezione di TextView, abbiano descrizioni dei contenuti. |
Funzionalità
| ID | Funzionalità | Descrizione |
|---|---|---|
| Audio | ||
| T-Audio:Init | Audio:Init | Avvia la riproduzione audio. Verifica che entro un secondo l'app inizi a riprodurre l'audio o fornisca un indicatore visivo che i dati audio vengono preparati per la riproduzione. |
| T-Audio:Focus | Audio:Focus | Avvia la riproduzione audio. L'app deve richiedere il focus audio. Quando la riproduzione audio si interrompe, l'app deve rilasciare l'audio focus (cosa che avviene automaticamente per le app che hanno come target Android 12 (livello API 31) e versioni successive). |
| T-Audio:Interrupt | Audio:Interrupt | Avvia la riproduzione audio. Avvia la riproduzione audio in un'altra app. La tua app deve rispondere alla modifica della messa a fuoco audio e interrompere la riproduzione audio o ridurre il volume di riproduzione. |
| T-Audio:Background | Audio:sfondo | Avvia la riproduzione audio. Interagisci con un'altra app non audio come app in primo piano. L'app dovrebbe continuare a riprodurre l'audio in background. |
| T-Audio:Notification | Audio:Notifica | Avvia la riproduzione audio. Interagisci con un'altra app non audio come app in primo piano. Verifica che la tua app continui a riprodurre audio in background e abbia creato una notifica con lo stile MediaStyle. Consulta la sezione Utilizzo dei controlli multimediali. |
| T-Audio:Resume | Audio:Riprendi | Avvia la riproduzione audio. Interagisci con un'altra app non audio come app in primo piano. Interagisci con la tua app per portarla in primo piano. La riproduzione audio dovrebbe riprendere o il volume dovrebbe essere ripristinato. In caso contrario, l'app deve indicare all'utente che la riproduzione è in pausa. |
| T-Video:PiP | Video:PiP | Attiva la riproduzione video delle app in modalità Picture in picture. |
| T-Video:Encoding | Video:codifica | Verifica che l'app codifichi il video utilizzando lo standard di compressione video HEVC. |
| Condivisione | ||
| Condivisione:foglio | Crea un intent e avvia un'attività chiamando startActivity() con l'intent come argomento. Vedi Utilizzare il foglio di condivisione di Android. L'app dovrebbe mostrare il foglio di condivisione di Android. |
|
| Servizi in background | ||
| CR-6 | Contesto:servizi | Utilizza tutte le funzionalità principali dell'app. Verifica che non vengano avviati servizi in background a lunga esecuzione. Passa a un'altra app per inviare l'app in background. Vai a Impostazioni e controlla se l'app ha servizi in esecuzione in background. Su Android 4.0 e versioni successive, vai alla schermata App e trova l'app nella scheda In esecuzione. |
Prestazioni e stabilità
| ID | Funzionalità | Descrizione |
|---|---|---|
| Prestazioni | ||
| T- Performance:Startup | Prestazioni:avvio | Avvia l'app. Verifica che l'app si carichi rapidamente o fornisca un indicatore di avanzamento o un segnale simile se il caricamento richiede più di due secondi. |
| T-Performance:FPS | Prestazioni:FPS | Utilizza tutte le funzionalità principali della tua app. Verifica che l'app esegua il rendering di almeno 60 frame al secondo. Utilizza l'opzione Rendering HWUI profilo per testare la tua app. |
| T-Performance:Strict | Prestazioni:rigoroso |
Attiva Presta molta attenzione alla garbage collection e al suo impatto sull'esperienza utente. |
| Stabilità | ||
| T-Stability:ANR | Stabilità:ANR | Utilizza tutte le funzionalità principali della tua app. Verifica che l'app non si arresti in modo anomalo o blocchi il thread dell'interfaccia utente causando errori ANR (Android Not Responding). Esamina il report pre-lancio di Google Play per identificare potenziali problemi di stabilità. |
| SDK | ||
| T-SDK:Platform | SDK:Platform | Esegui la tua app sull'ultima versione pubblica della piattaforma Android. Utilizzare tutte le funzionalità principali. Verifica che l'app non si arresti in modo anomalo e che funzioni senza perdita di funzionalità di base. |
| T-SDK:Latest | SDK:Target, SDK:Compila |
Esamina il file manifest Android e la configurazione di build per assicurarti che l'applicazione sia creata in base all'SDK più recente disponibile (targetSdk e compileSdk). |
| T-SDK:3P | SDK:3P | Controlla il file build.gradle della tua app per eventuali dipendenze obsolete. |
| T-SDK:Non | SDK:Non | Utilizza lo strumento lint di Android Studio per rilevare l'utilizzo di interfacce non SDK. Per metodi di test alternativi, consulta Limitazioni relative alle interfacce non SDK. |
| T-SDK:Debug | SDK:Debug | Controlla il file build.gradle della tua app per verificare la presenza di librerie di debug incluse. |
| Batteria | ||
| T-Battery:Manage | Batteria:gestisci |
Utilizzare tutte le principali funzionalità delle app nelle modalità di sospensione e Standby delle app. Verifica che sveglie, timer, notifiche e sincronizzazioni funzionino correttamente nella finestra di manutenzione di Doze e quando l'app esce dalla modalità Standby app. Testa il comportamento di sospensione e standby delle app utilizzando i comandi ADB (consulta Test con sospensione e standby delle app per requisiti e linee guida). Per diagnosticare un consumo anomalo della batteria, utilizza Android Studio Power Profiler o lo strumento Battery Historian in combinazione con il lavoro in background pianificato. |
Privacy e sicurezza
| ID | Funzionalità | Descrizione |
|---|---|---|
| Autorizzazioni | ||
| T-Permissions:Min | Autorizzazioni:min | Esamina tutte le autorizzazioni richieste dalla tua app nel file manifest, in fase di runtime e nelle impostazioni dell'app sul dispositivo (Impostazioni > Informazioni app). |
| T-Permissions:Sensitive | Autorizzazioni:sensibili | Utilizza le funzionalità della tua app che richiedono autorizzazioni. Verifica che l'app richieda l'autorizzazione ad accedere a servizi o dati sensibili solo per i casi d'uso principali dell'app. Verifica che le implicazioni della concessione dell'autorizzazione a dati e servizi sensibili siano comunicate chiaramente all'utente. |
| T-Permissions:Runtime | Autorizzazioni:runtime | Utilizza tutte le funzionalità della tua app che richiedono autorizzazioni. Verifica che le autorizzazioni vengano richieste in modo differito, ovvero solo quando si accede alle funzionalità, anziché all'avvio dell'app. |
| T-Permissions:Explain | Autorizzazioni:spiega | Utilizza tutte le funzionalità della tua app che richiedono autorizzazioni. Verifica che l'app spieghi all'utente perché sono necessarie le autorizzazioni. |
| T-Permissions:Degrade | Autorizzazioni:downgrade | Utilizza tutte le funzionalità della tua app che richiedono autorizzazioni. Nega o revoca le autorizzazioni. Verifica che l'app fornisca un caso d'uso alternativo e continui a funzionare. |
| Dati e file | ||
| T-Data:Sensitive | Data:Sensitive | Esamina tutti i dati archiviati nella memoria interna. Verifica che i dati archiviati esternamente non siano dati sensibili. |
| T-Data:Handling | Data:Sensitive | Esamina come vengono gestiti ed elaborati i dati caricati da un'unità di archiviazione esterna. |
| T-Data:Log | Dati:Log | Utilizza tutte le funzionalità principali dell'app durante il monitoraggio del log del dispositivo. Verifica che non vengano registrate informazioni private dell'utente. |
| T-Data:IDs | Dati:ID | Utilizzare tutte le funzionalità principali dell'app. Verifica che l'app non utilizzi ID hardware come l'IMEI a scopo di identificazione. |
| Identità | ||
| T-Identity:Hints | Identity:Hints | Utilizza tutte le funzionalità dell'app che richiedono l'input dell'utente. Verifica che l'app fornisca suggerimenti per compilare automaticamente i campi di input per dati quali le credenziali dell'account e altre informazioni sensibili. |
| T-Identity:CredMan | Identity:CredMan | Accedi alla tua app. Verifica che l'app integri Credential Manager per Android per un'esperienza di accesso che unifica il supporto per le passkey, l'identità federata e le password. |
| T-Identity:Bio | Identità:bio | Utilizzare tutte le funzionalità dell'app che richiedono l'autenticazione. Verifica che l'app protegga le transazioni finanziarie o le informazioni sensibili, come i documenti importanti dell'utente, con l'autenticazione biometrica. |
| Componenti app | ||
| T-Components:Export | Componenti:esportazione | Esamina tutti i componenti dell'applicazione definiti nel file manifest di Android per lo stato di esportazione appropriato. La proprietà esportata deve essere impostata in modo esplicito per tutti i componenti. |
| T-Components:Permissions | Componenti:autorizzazioni | Esamina tutte le autorizzazioni richieste dalla tua app nel file manifest, in fase di runtime e nelle impostazioni dell'app sul dispositivo (Impostazioni > Informazioni app). |
| T-Components:Protection | Componenti:protezione | Esamina tutti i fornitori di contenuti definiti nel file manifest di Android. Assicurati che ogni fornitore abbia un protectionLevel appropriato. |
| Reti | ||
| T-Network:Traffic | Rete:traffico | Dichiara una configurazione di sicurezza di rete che disattiva il traffico di testo non criptato, quindi testa l'app. |
| T-Network:Config | Network:Config | Controlla la configurazione della sicurezza di rete dell'app. Verifica che nessun controllo lint sulla configurazione non vada a buon fine. |
| T-Network:Play | Rete:Play | Verifica che il fornitore di sicurezza sia inizializzato all'avvio dell'applicazione per i servizi Google Play. |
| WebView | ||
| T-WebViews:Config | WebViews:Config | Controlla la configurazione della sicurezza di rete dell'app. Verifica che nessun controllo lint sulla configurazione non vada a buon fine. |
| T-WebViews:JavaScript | WebView:JavaScript | Per ogni WebView, vai a una pagina che richiede JavaScript. |
| T-WebViews:Nav | WebViews:Config, WebViews:JavaScript |
In ogni WebView, prova a navigare su siti e contenuti che non vengono caricati direttamente dalla tua app. |
| Esecuzione | ||
| T-Execution:Bundles | Esecuzione:bundle | Verifica che l'app utilizzi Android App Bundle e non carichi dinamicamente codice dall'esterno dell'APK dell'app. |
| Crittografia | ||
| T-Crypto:Algorithms | Crypto:Algorithms | Verifica che l'app utilizzi algoritmi crittografici e un generatore di numeri casuali efficaci forniti dalla piattaforma. Verifica inoltre che l'app non implementi algoritmi personalizzati. |
Google Play
| ID | Funzionalità | Descrizione |
|---|---|---|
| Norme | ||
| T-Play:Policies | Play:Policies, Play:Maturity, Play:Bugs |
Accedi a Google Play Console per esaminare il tuo profilo sviluppatore, la descrizione dell'app, gli screenshot, la grafica in primo piano, la classificazione dei contenuti e il feedback degli utenti. |
| Pagina dei dettagli dell'app | ||
| T-Play:Graphics | Play:Graphics | Scarica la grafica in evidenza e gli screenshot e ridimensionali in modo che corrispondano alle dimensioni di visualizzazione sui dispositivi e sui fattori di forma che prendi di mira. |
| T-Play:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
Esamina tutti gli asset grafici, i contenuti multimediali, il testo, le librerie di codice e gli altri contenuti inclusi nel download dell'app o del file di espansione. |
Archive
Versioni precedenti delle norme sulla qualità principali delle app: