Diretrizes principais de qualidade de apps

Para fornecer uma base sólida para um app de qualidade, siga as diretrizes principais de qualidade de apps.

As diretrizes definem a qualidade mínima que todos os apps precisam atender.

Qualidade adaptável do app

Os apps Android são executados em uma grande variedade de dispositivos, desde smartphones compactos até tablets, dobráveis, computadores, telas conectadas, sistemas de infoentretenimento para carros, TVs e XR. Os modos de janela, como tela dividida e modo janela para computador, permitem que os apps sejam executados em partes redimensionáveis de uma tela.

Siga as diretrizes de qualidade de apps adaptáveis, em conjunto com as diretrizes principais de qualidade de apps, para:

  • Criar apps otimizados para todos os formatos e tamanhos de tela
  • Melhorar a classificação dos seus apps nas páginas de detalhes e na pesquisa do Google Play
  • Conquistar mais usuários e aumentar a retenção de usuários

Diretrizes

As diretrizes principais a seguir ajudam você a criar um app básico de alta qualidade.

Experiência do usuário

Os padrões de design visual e interação do Android oferecem uma experiência do usuário consistente e intuitiva.

Use os componentes do Material Design para criar a interface do usuário do app em vez dos componentes da plataforma Android, sempre que possível. O Material Design oferece uma aparência moderna ao Android, além de consistência de interface em todas as versões do sistema.

Usabilidade

ID Testes Descrição
Consistent_UX T-Consistent_UX,
T-SD_Card
O app oferece uma experiência do usuário consistente para todos os casos de uso em todos os formatos.
App_Switcher T-App_Switcher,
T-SD_Card
O app vai para o segundo plano quando o foco muda para outro app e retorna ao primeiro plano quando é reativado no seletor de apps Recentes.
Sleep_Resume T-Sleep_Resume,
T-SD_Card
Quando o app está em primeiro plano, ele é pausado quando o dispositivo entra no modo de suspensão e é retomado quando o dispositivo é ativado.
Lock_Resume T-Lock_Resume,
T-SD_Card
Quando o app está em primeiro plano, ele é pausado quando o dispositivo é bloqueado e retomado quando o dispositivo é desbloqueado.

Interface do usuário

ID Testes Descrição
Display_State_Parity T-Orientation_Transitions

As orientações de tela e os estados de dobra expõem basicamente os mesmos recursos e ações e preservam a paridade funcional.

Fullscreen_Display T-Orientation_Transitions

O app preenche a janela nas duas orientações e não tem efeito letterbox devido a mudanças de configuração, incluindo dobrar e desdobrar o dispositivo.

Um leve efeito letterbox para compensar pequenas variações na geometria da tela é aceitável.

Orientation_Transitions T-Orientation_Transitions O app processa transições rápidas entre as orientações da tela e o dobrar/desdobrar do dispositivo sem problemas de renderização e sem perder o estado.

Qualidade visual

ID Testes Descrição
Graphic_Quality T-Graphic_Quality

O app exibe gráficos, texto, imagens e outros elementos da interface sem distorção, desfoque ou pixelização perceptíveis.

  • O app usa drawables vetoriais sempre que possível.
  • O app usa gráficos de alta qualidade para todos os tamanhos de tela e formatos de dispositivo segmentados
  • Sem serrilhado nas bordas de menus, botões e outros elementos da interface
Line_Length T-Line_Length O app garante a legibilidade do texto e dos blocos de texto limitando o comprimento da linha a 45-75 caracteres (incluindo espaços) para cada um dos idiomas compatíveis.
Theme_Support T-Theme_Support O conteúdo do app e todo o conteúdo da Web acessado por ele têm suporte aos temas claro e escuro.
ID Testes Descrição
Back_Button_Nav T-Back_Nav O app é compatível com a navegação padrão do botão "Voltar" e não usa solicitações personalizadas na tela.
Back_Gesture_Nav T-Back_Nav O app é compatível com a navegação por gestos para voltar e acessar a tela inicial.
State_Preservation T-State_Preservation,
T-Back_Nav

O app preserva o estado do usuário ou do app ao sair do primeiro plano e impede a perda acidental de dados devido à navegação de retorno e outras mudanças de estado.

Ao retornar ao primeiro plano, o app restaura o estado preservado e todas as transações com estado pendentes. Por exemplo, mudanças em campos editáveis, progresso do jogo, menus, vídeos e outras seções do app.

  • Quando o app é retomado pelo seletor de apps Recentes, ele retorna o usuário ao estado exato em que estava quando foi usado pela última vez.
  • Quando o app é retomado depois que o dispositivo sai do estado de suspensão (bloqueado), o app retorna o usuário ao estado exato em que estava quando foi usado pela última vez.
  • Quando o app é reiniciado na tela inicial ou em Todos os apps, ele precisa fazer uma das seguintes ações, dependendo de quanto tempo se passou desde o último uso:
    • Se o app foi usado há pouco tempo (minutos), restaure o estado dele o mais próximo possível do estado anterior.
    • Se mais tempo tiver passado desde o último uso, tente restaurar o app o mais próximo possível do estado anterior ou inicie-o na tela inicial ou em outro estado padrão.

Notificações

ID Testes Descrição
Notification_Quality T-Notification_Quality

As notificações fornecem informações relevantes relacionadas ao seu app.

  • Não use notificações para fazer promoção cruzada ou publicidade de outro produto, já que isso é estritamente proibido pela Play Store.
  • Os canais de notificação são definidos de acordo com as práticas recomendadas em vez de mostrar todas as notificações de um canal.
  • Selecione a prioridade de notificação correta.
  • Empilhe várias notificações em um único grupo de notificações sempre que possível.
  • Defina tempos limite para as notificações, quando apropriado.
  • As notificações são persistentes apenas quando estão relacionadas a eventos contínuos, como reprodução de música ou uma chamada telefônica. Para saber mais, consulte a seção Funcionalidade.
Conversation_Quality T-Notification_Quality

Para apps de mensagens, aplicativos sociais e conversas, siga estas recomendações:

Acessibilidade

ID Testes Descrição
Touch_Target_Size T-Touch_Target_Size As áreas de toque têm no mínimo 48 dp. Consulte as diretrizes de tamanhos de destino do Material Design (em inglês).
Visual_Contrast T-Visual_Contrast

O texto e o conteúdo em primeiro plano do app mantêm as seguintes taxas de contraste com o plano de fundo:

  • 3:1 para textos ou imagens grandes
  • 4,5:1 para textos pequenos (menos de 18 pt ou menos de 14 pt se o texto estiver em negrito)

Saiba mais sobre cor e contraste.

Content_Description T-Content_Description Descreva cada elemento da interface, exceto TextView, usando contentDescription.

Funcionalidade

Seu app precisa implementar o seguinte comportamento funcional.

Áudio

ID Testes Descrição
Audio_Playback_Start T-Audio_Playback_Start

Quando o usuário inicia a reprodução de áudio, o app precisa executar uma das seguintes ações em até um segundo:

  • Começar a tocar o áudio
  • Fornecer um indicador visual de que os dados de áudio estão sendo preparados
Audio_Focus_Request T-Audio_Focus_Request O app precisa solicitar o foco de áudio quando o áudio começar a ser reproduzido e abandonar o foco quando a reprodução for interrompida.
Audio_Focus_Change T-Audio_Focus_Change O app precisa processar as solicitações de seleção de áudio de outros apps. Por exemplo, um app pode reduzir o volume da reprodução quando outro inicia uma fala.
Audio_Playback_Background T-Audio_Playback_Background

O app precisa oferecer suporte à reprodução em segundo plano.

O app precisa usar um serviço em primeiro plano para impedir que o sistema encerre o processo do app quando ele não estiver mais visível. O app também precisa mostrar uma notificação persistente e não dispensável na barra de status ou na tela de bloqueio para informar ao usuário que o app está em execução.

Os usuários precisam conseguir controlar a reprodução usando os controles de notificação ou da tela de bloqueio ou os controles de um acessório conectado.

Audio_Notification_Style T-Audio_Notification_Style Quando o app reproduz áudio em segundo plano, ele precisa criar uma notificação estilizada com MediaStyle.
Audio_Playback_Resume T-Audio_Playback_Resume Se o app estiver em segundo plano e o áudio estiver pausado, o áudio será retomado quando o app voltar ao primeiro plano ou o app precisará indicar ao usuário que a reprodução está pausada.

Vídeo

ID Testes Descrição
Video_PiP T-Video_PiP Se o app reproduzir vídeos, ele precisa ser compatível com a reprodução picture-in-picture.
Video_Encoding T-Video_Encoding Se o app codificar vídeos, ele precisará usar o padrão de compactação de vídeo HEVC.
Video_Playback_Background T-Video_Playback_Background

O app oferece suporte à reprodução de vídeo em segundo plano quando não é o app principal, inclusive quando a janela do app está:

  • Minimizado
  • Atrás de outras janelas ou da interface do sistema (por exemplo, aba de notificações ou tela inicial/tela de bloqueio)
  • Fora da tela visível do computador

Compartilhamento

ID Testes Descrição
System_Sharesheet T-System_Sharesheet O app precisa usar o Android Sharesheet ao compartilhar conteúdo. O app pode sugerir destinos que estão indisponíveis para soluções personalizadas.

Serviços em segundo plano

ID Testes Descrição
Background_Service_Optimization T-Background_Service_Optimization

O app evita a execução de serviços desnecessariamente longos em segundo plano para garantir o bom funcionamento do dispositivo do usuário.

Observação:o sistema aplica várias restrições aos serviços em segundo plano.

Veja a seguir exemplos de uso inadequado de serviços em segundo plano:

  • Manter uma conexão de rede para notificações
  • Manter uma conexão Bluetooth
  • Manter o GPS ligado

Para mais informações, consulte Visão geral das tarefas em segundo plano.

Desempenho e estabilidade

Seu app precisa oferecer desempenho, estabilidade, compatibilidade e capacidade de resposta ideais.

Desempenho

ID Testes Descrição
App_Startup_Time T-App_Startup_Time O app carrega rapidamente ou fornece feedback na tela ao usuário (um indicador de progresso ou recurso semelhante) se o app demorar mais de dois segundos para carregar.
Rendering_Performance T-Rendering_Performance O app renderiza quadros a cada 16 milissegundos (ou menos) para mostrar pelo menos 60 quadros por segundo. Para receber ajuda com problemas de renderização, consulte Renderização lenta.
StrictMode_Compliance T-StrictMode_Compliance Com o StrictMode ativado (consulte a seção de testes do StrictMode), nenhum flash vermelho (avisos de desempenho do StrictMode) fica visível ao testar o app.

Estabilidade

ID Testes Descrição
Stability_ANR T-Stability_ANR O app não falha nem bloqueia a linha de execução de interface, o que causa erros do tipo O app não está respondendo (ANR). Use o relatório de pré-lançamento do Google Play para identificar possíveis problemas de estabilidade. Após a implantação, monitore a página Android vitals no Google Play Console.

SDK

ID Testes Descrição
Android_Platform_Compatibility T-Android_Platform_Compatibility O app é executado na versão pública mais recente da plataforma Android sem falhas e sem afetar drasticamente a funcionalidade principal.
Target_SDK_Version T-Target_SDK_Version O app é destinado ao SDK do Android mais recente necessário para se alinhar aos requisitos do Google Play definindo o valor de targetSdk no arquivo build.gradle do módulo do app.
Compile_SDK_Version T-Target_SDK_Version O app é criado com o SDK do Android mais recente definindo o valor de compileSdk no arquivo build.gradle do módulo do app.
SDK_Maintenance T-SDK_Maintenance,
T-Non_SDK_Interfaces

Todos os SDKs do Google ou de terceiros usados estão atualizados. Qualquer melhoria nesses SDKs relacionada à estabilidade, compatibilidade ou segurança será disponibilizada aos usuários em tempo hábil.

Para SDKs do Google, use SDKs com a tecnologia do Google Play Services sempre que ela estiver disponível. Esses SDKs são compatíveis com versões anteriores, recebem atualizações automáticas, reduzem o tamanho do pacote de apps e usam os recursos do dispositivo com eficiência.

Non_SDK_Interfaces T-Non_SDK_Interfaces O app não usa interfaces que não são SDK.
Production_Build_Quality T-Production_Build_Quality Nenhuma biblioteca de depuração está incluída no app de produtividade. As bibliotecas de depuração incluídas no app podem causar problemas de desempenho e de segurança.

Bateria

ID Testes Descrição
Power_Management T-Power_Management

O app é compatível com os recursos de gerenciamento de energia Soneca e App em espera.

Os apps podem solicitar uma isenção de manutenção de energia. Consulte Suporte a outros casos de uso em Otimizar para os modos Soneca e App em espera.

Privacidade e segurança

O app processa os dados do usuário e as informações pessoais com segurança e oferece níveis de permissão adequados.

Os aplicativos publicados na Google Play Store também precisam seguir as políticas de dados do usuário do Google Play para proteger a privacidade do usuário.

Permissões

ID Testes Descrição
Minimize_Permissions T-Minimize_Permissions O app solicita apenas as permissões mínimas necessárias para o caso de uso atual. Para algumas permissões, como localização, o app usa uma especificação aproximada em vez de precisa, se possível. Consulte Minimizar as solicitações de permissão.
Sensitive_Permissions T-Sensitive_Permissions

O app solicita permissão para acessar dados sensíveis (como grupos de permissões de SMS ou registro de chamadas ou localização) ou serviços que geram custos (como Telefone ou SMS) somente quando ela está diretamente relacionada aos principais casos de uso do app. As implicações relacionadas a essas permissões precisam ser divulgadas em destaque para o usuário.

Dependendo de como o app usa as permissões, pode haver uma forma alternativa de atender ao caso de uso do app, sem depender de acesso a informações sensíveis. Por exemplo, em vez de solicitar permissões relacionadas aos contatos de um usuário, use uma intent implícita para solicitar acesso.

Runtime_Permissions T-Runtime_Permissions O app solicita permissões de execução quando a funcionalidade é solicitada, não durante a inicialização do app.
Permission_Rationale T-Permission_Rationale O app explica claramente por que as permissões são necessárias.
Graceful_Degradation T-Graceful_Degradation O app faz uma degradação suave quando os usuários negam ou revogam uma permissão. O app não pode impedir totalmente o acesso do usuário.

Dados e arquivos

ID Testes Descrição
Sensitive_Data_Storage T-Sensitive_Data_Storage,
T-Sensitive_Data_Handling
Todos os dados sensíveis são mantidos no armazenamento interno do app.
Sensitive_Data_Logging T-Sensitive_Data_Logging Nenhum dado pessoal ou sensível do usuário é registrado no registro do sistema ou em um registro específico do app.
Hardware_IDs T-Hardware_IDs O app não usa IDs de hardware que não podem ser redefinidos, como o IMEI, para fins de identificação.

Backup e restauração de dados

ID Testes Descrição
App_Data_Backup T-App_Data_Backup

O app preserva os dados, as configurações e o estado do app em backups na nuvem e transferências de dispositivo para dispositivo (D2D, na sigla em inglês).

Implemente o Backup automático e configure o android:dataExtractionRules para garantir uma restauração de dados sem problemas ao configurar um novo dispositivo ou reinstalar o app.

App_Logins_Restoration T-App_Logins_Restoration

O app restaura automaticamente as contas de usuário e o estado de login quando um usuário configura um novo dispositivo.

Implemente o Restaurador de Credenciais usando o Gerenciador de Credenciais para autenticar os usuários automaticamente sem forçar fluxos de login manual ou de recuperação de conta.

Identidade

ID Testes Descrição
Autofill_Hints T-Autofill_Hints O app oferece dicas para o preenchimento automático de credenciais da conta e outras informações sensíveis, como informações de cartão de crédito, endereço físico e número de telefone.
Credential_Manager T-Credential_Manager O app integra o Gerenciador de credenciais para Android para uma experiência de login integrada que unifica o suporte a chaves de acesso, identidade federada e senhas.
Biometric_Authentication T-Biometric_Authentication O app oferece suporte à autenticação biométrica para proteger transações financeiras ou informações sensíveis, como documentos importantes do usuário.

Componentes do app

ID Testes Descrição
Component_Export T-Component_Export

O app define o atributo android:exported explicitamente para todas as atividades, serviços, broadcast receivers e, principalmente, provedores de conteúdo.

Apenas componentes de aplicativo que compartilham dados com outros apps ou que deveriam ser invocados por outros apps são exportados.

Component_Permissions T-Component_Permissions

Todas as intents e transmissões seguem as práticas recomendadas:

Component_Protection T-Component_Protection

Todos os componentes que compartilham conteúdo entre apps usam android:protectionLevel="signature" para permissões personalizadas. Isso inclui atividades, serviços, broadcast receivers e, principalmente, provedores de conteúdo.

A maioria dos apps não pode acessar uma lista de pacotes instalados.

Rede

ID Testes Descrição
Network_Security_Traffic T-Network_Security_Traffic Todo o tráfego de rede é enviado por SSL.
Network_Security_Configuration T-Network_Security_Configuration O app declara uma configuração de segurança de rede.
Security_Provider_Initialization T-Security_Provider_Initialization Se o app usar o Google Play Services, o provedor de segurança será inicializado com ele.

WebViews

ID Testes Descrição
WebView_Asset_Loader T-WebView_Asset_Loader,
T-WebView_Navigation
Não use setAllowUniversalAccessFromFileURLs() para acessar conteúdo local. Em vez disso, use WebViewAssetLoader.
WebView_JavaScript T-WebView_JavaScript,
T-WebView_Navigation

As visualizações da Web não usam addJavaScriptInterface() com conteúdo não confiável.

No Android 6.0 (nível 23 da API e versões mais recentes), use canais de mensagem HTML.

Execução

ID Testes Descrição
App_Bundles T-App_Bundles

O app não carrega código dinamicamente de fora do APK. Use os Android App Bundles, que incluem o Play Feature Delivery e o Play Asset Delivery.

Desde agosto de 2021, o uso de Android App Bundles é obrigatório para todos os novos apps na Google Play Store.

Criptografia

ID Testes Descrição
Cryptographic_Algorithms T-Cryptographic_Algorithms O app usa algoritmos criptográficos e um gerador de números aleatórios fortes fornecidos pela plataforma. Além disso, ele não implementa algoritmos personalizados.

Google Play

Ativar a publicação do app no Google Play.

Políticas

ID Testes Descrição
Play_Content_Policies T-Play_Content_Policies O app segue estritamente os termos da Política de conteúdo para desenvolvedores do Google Play, não oferece conteúdo inadequado e não usa a propriedade intelectual ou a marca de terceiros.
Play_Content_Rating T-Play_Content_Policies O nível de maturidade do app é definido de forma adequada com base nas diretrizes de classificação do conteúdo.

Página de detalhes do app

ID Testes Descrição
Play_Feature_Graphic T-Play_Feature_Graphic,
T-Play_Graphic_Assets

O recurso gráfico do app segue as diretrizes descritas neste artigo de suporte. Confirme se:

  • A página de detalhes do app inclui um recurso gráfico de alta qualidade
  • O gráfico de recursos não contém imagens de dispositivos, capturas de tela ou textos pequenos que ficam ilegíveis quando reduzidos e exibidos no menor tamanho de tela que seu app segmenta
  • O recurso gráfico não se parece com um anúncio
Play_Device_References T-Play_Graphic_Assets As capturas de tela e os vídeos do app não mostram nem mencionam dispositivos que não são Android.
Play_Misleading_Content T-Play_Graphic_Assets As capturas de tela ou os vídeos do app não representam o conteúdo e a experiência dele de forma enganosa.

Suporte do usuário

ID Testes Descrição
Play_User_Reviews T-Play_Content_Policies Bugs frequentes relatados pelos usuários na guia Avaliações da página do Google Play são resolvidos se forem reproduzíveis e ocorrerem em muitos dispositivos diferentes. Se um bug ocorrer apenas em alguns dispositivos, tente resolvê-lo mesmo se esses dispositivos forem novos ou muito comuns.

Ambiente de teste

Configure um ambiente de teste da seguinte maneira:

  • Teste de emulador:o Android Emulator é uma ótima maneira de testar seu app em diferentes versões do Android e resoluções de tela. Configure dispositivos emulados (AVDs) para representar os formatos e as combinações de hardware/software mais comuns para sua base de usuários de destino. Teste vários formatos usando os seguintes emuladores (no mínimo):

    • Dispositivos dobráveis: 7,6" com tela externa (listados em smartphones no AVD Manager).
    • Tablet: Pixel C 9,94" (2.560 px x 1.800 px)
    • Teste de notificação de apps para dispositivos móveis: pareie um dispositivo móvel ou emulador com o emulador do Wear OS: Wear OS Round 1,84"
  • Dispositivos de hardware:seu ambiente de teste precisa incluir um pequeno número de dispositivos de hardware reais que representem os principais formatos e combinações de hardware/software disponíveis para os consumidores. Não é necessário testar em todos os dispositivos do mercado. Concentre-se em um pequeno número de dispositivos representativos, usando até mesmo um ou dois dispositivos por formato.

  • Laboratórios de teste de dispositivos:você também pode usar serviços de terceiros, como o Firebase Test Lab, para testar seu app em uma ampla variedade de dispositivos.

  • Teste com a versão mais recente do Android:além de testar versões representativas do Android para sua base de usuários-alvo, você precisa sempre testar com a versão mais recente do Android para garantir que as mudanças de comportamento mais recentes não afetem negativamente a experiência do usuário do app.

Para mais orientações sobre testes, incluindo testes de unidade, de integração e de interface, consulte Conceitos básicos para testar apps Android.

StrictMode

Para testes de desempenho, ative o StrictMode no app. Use o StrictMode para detectar operações que podem afetar o desempenho, os acessos à rede e as leituras e gravações de arquivos. Procure operações potencialmente problemáticas na linha de execução principal e em outras.

Configure uma política de monitoramento por linha de execução usando StrictMode.ThreadPolicy.Builder e ative todo o monitoramento compatível no ThreadPolicy usando detectAll().

Ative a notificação visual de violações da política para o ThreadPolicy usando penaltyFlashScreen().

Testes

Os testes de qualidade básica de apps ajudam a avaliar a qualidade fundamental do seu app. É possível combinar os testes ou integrar grupos de testes no seu plano de teste.

Experiência do usuário

Teste para garantir uma experiência do usuário consistente e intuitiva.

Usabilidade

ID Recurso Descrição
T-Consistent_UX Consistent_UX

Navegue por todas as partes do app: todas as telas, caixas de diálogo, configurações e todos os fluxos do usuário.

Faça o seguinte:
  • Se o app permitir a edição ou criação de conteúdo, reprodução de mídia ou jogos, teste esses fluxos.
  • Ao testar o app, inclua interrupções de outros apps, como receber uma notificação ou uma chamada telefônica. Além disso, aplique mudanças temporárias a atributos do dispositivo, como conectividade de rede, função da bateria, disponibilidade de GPS e carregamento do sistema.
  • Insira e teste todos os fluxos de compra no app.
T-App_Switcher App_Switcher Em cada tela do app, mude para outro app em execução e volte para o app em teste usando o seletor de apps Recentes.
T-Sleep_Resume Sleep_Resume Pressione o botão liga/desliga para colocar o dispositivo em suspensão e pressione-o novamente para ligar a tela.
T-Lock_Resume Lock_Resume Configure um bloqueio de tela no dispositivo. Pressione o botão liga/desliga para colocar o dispositivo em suspensão, o que o bloqueará. Em seguida, pressione o botão novamente para ligar a tela e desbloquear o dispositivo.

Cartão SD

ID Recurso Descrição
T-SD_Card Consistent_UX

Realize testes de funcionalidade principal com o app instalado no cartão SD de um dispositivo (se o app for compatível com esse método de instalação).

Para mover o app para um cartão SD, acesse as Configurações dele.

Interface do usuário

ID Recurso Descrição
T-Orientation_Transitions Display_State_Parity,
Fullscreen_Display,
Orientation_Transitions

Em cada tela do app, gire o dispositivo entre as orientações de paisagem e retrato e os estados dobrado e desdobrado pelo menos três vezes.

Verifique se o app faz o seguinte:
  • Oferece paridade de funções em todas as orientações de tela e estados de dobra
  • Preenche a janela do app em todas as orientações de tela e estados de dobra e não tem efeito letterbox.
  • Mantém o estado e não tem problemas de renderização durante transições rápidas entre orientações e ao dobrar e desdobrar o dispositivo

Qualidade visual

ID Recurso Descrição
T-Graphic_Quality Graphic_Quality Use todos os recursos do app. Verifique se todos os elementos visuais, incluindo gráficos, textos, imagens e outros elementos da interface, estão livres de distorção, desfoque ou pixelização.
T-Line_Length Line_Length

Revise todos os blocos de texto no app. Verifique se o comprimento da linha do texto e do bloco de texto está limitado a 45-75 caracteres (incluindo espaços) para facilitar a leitura.

Verifique o seguinte:
  • A composição é aceitável em todos os formatos compatíveis
  • Não use letras ou palavras cortadas
  • Não há quebras de linha inadequadas em botões ou ícones
  • Espaçamento suficiente entre o texto e os elementos ao redor
T-Theme_Support Theme_Support Verifique se todo o texto está legível nos temas claro e escuro. Verifique se todos os recursos visuais são claramente discerníveis e estéticos em temas claros e escuros.
ID Recurso Descrição
T-Back_Nav Back_Button_Nav,
Back_Gesture_Nav

Navegue por todas as partes do app: todas as telas, caixas de diálogo, configurações e todos os fluxos do usuário.

Em cada tela do app, pressione o botão Voltar ou use o gesto de deslizar para voltar. O app precisa navegar para a tela anterior ou inicial.

T-State_Preservation State_Preservation Em cada tela do app, pressione a tecla Início do dispositivo ou deslize para cima na navegação por gestos e reinicie o app na tela Todos os apps.

Notificações

ID Recurso Descrição
T-Notification_Quality Notification_Quality,
Conversation_Quality
Acione todos os tipos de notificação que o app pode exibir e observe-as na gaveta de notificações. Expanda as notificações quando aplicável (Android 4.1 e mais recentes) e toque em todas as ações disponíveis.

Acessibilidade

ID Recurso Descrição
T-Touch_Target_Size Touch_Target_Size Verifique se as áreas de toque mantêm um tamanho e uma posição acessíveis e consistentes para todos os tamanhos de tela e configurações. Para saber mais sobre acessibilidade, consulte o Scanner de acessibilidade.
T-Visual_Contrast Visual_Contrast Verifique o contraste de todos os elementos visuais.
T-Content_Description Content_Description Verifique se todos os elementos da interface, exceto TextView, têm descrições de conteúdo.

Funcionalidade

Verifique se o app implementa o seguinte comportamento funcional.

Áudio

ID Recurso Descrição
T-Audio_Playback_Start Audio_Playback_Start Inicie a reprodução de áudio. Verifique se, em um segundo, o app começa a reproduzir o áudio ou mostra um indicador visual de que os dados de áudio estão sendo preparados para reprodução.
T-Audio_Focus_Request Audio_Focus_Request Inicie a reprodução de áudio. O app precisa solicitar a seleção de áudio. Quando a reprodução de áudio é interrompida, o app precisa abrir mão do foco de áudio (o que acontece automaticamente em apps destinados ao Android 12 [nível 31 da API] e versões mais recentes).
T-Audio_Focus_Change Audio_Focus_Change Inicie a reprodução de áudio. Inicie a reprodução de áudio em outro app. Seu app precisa responder à mudança no foco de áudio e interromper a reprodução de áudio ou reduzir o volume.
T-Audio_Playback_Background Audio_Playback_Background

Inicie a reprodução de áudio. Interaja com outro app que não seja de áudio como o aplicativo em primeiro plano. O app precisa continuar tocando áudio em segundo plano e mostrar uma notificação na barra de status. Verifique se é possível gerenciar a reprodução usando os controles mostrados na notificação.

Bloqueie a tela do dispositivo. O app precisa continuar tocando áudio em segundo plano e mostrar uma notificação na tela de bloqueio. Verifique se é possível gerenciar a reprodução usando os controles mostrados na notificação.

T-Audio_Notification_Style Audio_Notification_Style Inicie a reprodução de áudio. Interaja com outro app que não seja de áudio como o aplicativo em primeiro plano. Verifique se o seu app continua tocando áudio em segundo plano e se criou uma notificação com o estilo MediaStyle. Consulte Como usar os controles de mídia.
T-Audio_Playback_Resume Audio_Playback_Resume Inicie a reprodução de áudio. Interaja com outro app que não seja de áudio como o aplicativo em primeiro plano. Interaja com seu app para que ele seja o principal. O áudio precisa ser retomado ou o volume precisa ser restaurado. Caso contrário, o app precisa indicar ao usuário que a reprodução está pausada.

Vídeo

ID Recurso Descrição
T-Video_PiP Video_PiP Ative a reprodução de vídeo do app no modo picture-in-picture.
T-Video_Encoding Video_Encoding Verifique se o app codifica o vídeo usando o padrão de compactação de vídeo HEVC.
T-Video_Playback_Background Video_Playback_Background Inicie a reprodução do vídeo. Minimizar a janela do app, abrir outro app para mover a janela do app para o segundo plano. Em dispositivos compatíveis com computadores, mova a janela do app para fora da área de trabalho visível. Verifique se a reprodução do vídeo continua sem interrupções em todos os casos.

Compartilhamento

ID Recurso Descrição
T-System_Sharesheet System_Sharesheet Crie uma intent e inicie uma atividade chamando startActivity() com a intent como argumento. Consulte Usar o Android Sharesheet. O app vai mostrar o Android Sharesheet.

Serviços em segundo plano

ID Recurso Descrição
T-Background_Service_Optimization Background_Service_Optimization

Use todos os principais recursos do app. Verifique se nenhum serviço em segundo plano de longa duração foi iniciado.

Mude para outro app para enviar o seu para o segundo plano. Acesse Configurações e verifique se o app tem algum serviço em execução em segundo plano. No Android 4.0 e versões mais recentes, acesse a tela Apps e encontre o app na guia Em execução.

Desempenho e estabilidade

Verifique o desempenho, a estabilidade e os recursos visuais perfeitos.

Desempenho

ID Recurso Descrição
T-App_Startup_Time App_Startup_Time Inicie o app. Verifique se ele carrega rapidamente ou se mostra um indicador de progresso ou recurso semelhante caso demore mais de dois segundos para carregar.
T-Rendering_Performance Rendering_Performance Use todos os principais recursos do app. Verifique se ele renderiza pelo menos 60 quadros por segundo. Use a opção Classificar renderização HWUI para ajudar a testar o app.
T-StrictMode_Compliance StrictMode_Compliance

Ative o StrictMode no seu app. Use todos os recursos principais. Verifique se o app não produz avisos de desempenho StrictMode, ou seja, se não há flashes vermelhos visíveis ao testar o app. Flashes vermelhos indicam mau comportamento em relação ao armazenamento, acesso à rede ou gerenciamento de memória (como vazamentos de memória).

Preste muita atenção à coleta de lixo e ao impacto dela na experiência do usuário.

Estabilidade

ID Recurso Descrição
T-Stability_ANR Stability_ANR Use todos os principais recursos do app. Verifique se ele não falha ou bloqueia a linha de execução de interface, causando erros de ANR (Android Not Responding). Consulte o relatório de pré-lançamento do Google Play para identificar possíveis problemas de estabilidade.

SDK

ID Recurso Descrição
T-Android_Platform_Compatibility Android_Platform_Compatibility Execute o app na versão pública mais recente da plataforma Android. Use todos os recursos principais. Verifique se o app não falha e é executado sem perda de funcionalidade principal.
T-Target_SDK_Version Target_SDK_Version,
Compile_SDK_Version
Revise o arquivo de manifesto do Android e a configuração do build para garantir que o aplicativo seja criado com o SDK mais recente disponível (targetSdk e compileSdk).
T-SDK_Maintenance SDK_Maintenance Revise o arquivo build.gradle do app para ver se há dependências desatualizadas.
T-Non_SDK_Interfaces Non_SDK_Interfaces Use a ferramenta lint do Android Studio para detectar o uso de interface que não é SDK. Consulte Restrições para interfaces não SDK para ver métodos de teste alternativos.
T-Production_Build_Quality Production_Build_Quality Revise o arquivo build.gradle do app para ver se há bibliotecas de depuração incluídas.

Bateria

ID Recurso Descrição
T-Power_Management Power_Management

Usar todos os principais recursos do app nos modos Soneca e App em espera. Verifique se os alarmes, timers, notificações e sincronizações funcionam corretamente na janela de manutenção do modo Soneca e quando o app sai do modo de espera.

Teste o comportamento dos recursos Soneca e App em espera usando comandos do adb (consulte Testes com os recursos Soneca e App em espera para ver os requisitos e as diretrizes).

Para diagnosticar o consumo inesperado de bateria, use o Power Profiler do Android Studio ou a ferramenta Battery Historian combinada com o trabalho em segundo plano planejado.

Privacidade e segurança

Testar as proteções de privacidade e segurança esperadas pelos usuários.

Permissões

ID Recurso Descrição
T-Minimize_Permissions Minimize_Permissions Revise todas as permissões que o app exige no arquivo de manifesto, no ambiente de execução e nas configurações do app no dispositivo (Configurações > Informações do app).
T-Sensitive_Permissions Sensitive_Permissions Use todos os recursos do app que solicitam permissões. Verifique se o app solicita permissão para acessar dados ou serviços sensíveis apenas para os principais casos de uso. Verifique se as implicações de conceder permissão a dados e serviços sensíveis são comunicadas claramente ao usuário.
T-Runtime_Permissions Runtime_Permissions Use todos os recursos do app que exigem permissões. Verifique se as permissões são solicitadas de forma preguiçosa, ou seja, apenas quando os recursos são acessados, e não durante a inicialização do app.
T-Permission_Rationale Permission_Rationale Use todos os recursos do app que exigem permissões. Verifique se o app explica ao usuário por que as permissões são necessárias.
T-Graceful_Degradation Graceful_Degradation Use todos os recursos do app que exigem permissões. Negar ou revogar as permissões. Verifique se o app oferece um caso de uso alternativo e continua funcionando.

Dados e arquivos

ID Recurso Descrição
T-Sensitive_Data_Storage Sensitive_Data_Storage Revise todos os dados mantidos no armazenamento interno. Verifique se os dados armazenados externamente não são sensíveis.
T-Sensitive_Data_Handling Sensitive_Data_Storage Analise como os dados carregados do armazenamento externo são tratados e processados.
T-Sensitive_Data_Logging Sensitive_Data_Logging Use todos os principais recursos do app enquanto monitora o registro do dispositivo. Verifique se nenhuma informação particular do usuário é registrada.
T-Hardware_IDs Hardware_IDs Use todos os principais recursos do app. Verifique se o app não usa IDs de hardware, como o IMEI, para fins de identificação.

Backup e restauração de dados

ID Recurso Descrição
T-App_Data_Backup App_Data_Backup

Configurar preferências locais, bancos de dados e configurações de apps em um dispositivo principal. Faça um backup na nuvem ou uma transferência entre dispositivos (D2D) para um novo aparelho.

Inicie o app no dispositivo de destino após a transferência e verifique se as preferências locais, o estado do banco de dados e as configurações do usuário foram restaurados corretamente de acordo com as regras de Backup Automático. Para ver os procedimentos de teste detalhados, consulte Testar backup e restauração.

T-App_Logins_Restoration App_Logins_Restoration

Configure uma sessão conectada em um dispositivo principal usando chaves de acesso, senhas ou o Login do Google. Faça um backup na nuvem ou uma transferência entre dispositivos (D2D) para um novo aparelho.

Inicie o app no dispositivo de destino após a transferência e verifique se a autenticação é restaurada automaticamente usando o Restaurador de Credenciais sem mostrar telas de login ou exigir a recuperação de conta. Para ver os procedimentos de teste detalhados, consulte Como testar as credenciais de restauração.

Identidade

ID Recurso Descrição
T-Autofill_Hints Autofill_Hints Use todos os recursos do app que exigem entrada do usuário. Verifique se o app oferece dicas para o preenchimento automático de campos de entrada de dados, como credenciais da conta e outras informações sensíveis.
T-Credential_Manager Credential_Manager Faça login no app. Verifique se ele integra o Gerenciador de credenciais para Android para uma experiência de login que unifica o suporte a chaves de acesso, identidade federada e senhas.
T-Biometric_Authentication Biometric_Authentication Usar todos os recursos do app que exigem autenticação. Verifique se o app protege transações financeiras ou informações sensíveis, como documentos importantes do usuário, com a autenticação biométrica.

Componentes do app

ID Recurso Descrição
T-Component_Export Component_Export Revise todos os componentes de aplicativo definidos no arquivo de manifesto do Android para o estado de exportação adequado. A propriedade exportada precisa ser definida explicitamente para todos os componentes.
T-Component_Permissions Component_Permissions Revise todas as permissões que o app exige no arquivo de manifesto, no ambiente de execução e nas configurações do app no dispositivo (Configurações > Informações do app).
T-Component_Protection Component_Protection Revise todos os provedores de conteúdo definidos no arquivo de manifesto do Android. Confira se cada provedor tem um protectionLevel apropriado.

Rede

ID Recurso Descrição
T-Network_Security_Traffic Network_Security_Traffic Declarar uma configuração de segurança de rede que desativa o tráfego de texto não criptografado e testar o app.
T-Network_Security_Configuration Network_Security_Configuration Revise a configuração de segurança de rede do app. Verifique se nenhuma verificação de lint na configuração falha.
T-Security_Provider_Initialization Security_Provider_Initialization Verifique se o provedor de segurança é inicializado na inicialização do aplicativo para o Google Play Services.

WebViews

ID Recurso Descrição
T-WebView_Asset_Loader WebView_Asset_Loader Revise a configuração de segurança de rede do app. Verifique se nenhuma verificação de lint na configuração falha.
T-WebView_JavaScript WebView_JavaScript Para cada WebView, acesse uma página que exija JavaScript.
T-WebView_Navigation WebView_Asset_Loader,
WebView_JavaScript
Em cada WebView, tente navegar para sites e conteúdo que não são carregados diretamente pelo app.

Execução

ID Recurso Descrição
T-App_Bundles App_Bundles Verifique se o app usa Android App Bundles e não carrega código dinamicamente de fora do APK do app.

Criptografia

ID Recurso Descrição
T-Cryptographic_Algorithms Cryptographic_Algorithms Verifique se o app usa algoritmos criptográficos e um gerador de números aleatórios fortes fornecidos pela plataforma. Verifique também se o app não implementa algoritmos personalizados.

Google Play

Verifique se o app está pronto para o Google Play.

Políticas

ID Recurso Descrição
T-Play_Content_Policies Play_Content_Policies,
Play_Content_Rating,
Play_User_Reviews
Faça login no Google Play Console para revisar seu perfil de desenvolvedor, a descrição do app, as capturas de tela, o recurso gráfico, a classificação do conteúdo e o feedback dos usuários.

Página de detalhes do app

ID Recurso Descrição
T-Play_Feature_Graphic Play_Feature_Graphic Faça o download do recurso gráfico e das capturas de tela e reduza-os para que fiquem do tamanho da tela nos dispositivos e formatos pretendidos.
T-Play_Graphic_Assets Play_Feature_Graphic,
Play_Device_References,
Play_Misleading_Content
Revise todos os recursos gráficos, mídia, texto, bibliotecas de código e outros conteúdos empacotados no download do app ou do arquivo de expansão.

Arquivar

Versões anteriores das diretrizes principais de qualidade de apps: