sucesso a longo prazo do seu app em termos de número de instalações e avaliações dos usuários, engajamento e retenção.
Para fornecer uma base sólida para um app de qualidade, siga as diretrizes principais de qualidade de apps.
As diretrizes definem o nível de qualidade mínimo que todos os apps precisam ter.
Qualidade adaptativa do app
Os apps Android funcionam em uma grande variedade de dispositivos, desde smartphones compactos até tablets, dobráveis, computadores, telas conectadas, sistemas de infoentretenimento de 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 adaptativa de apps, junto com as principais diretrizes 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 Detalhes do app e na pesquisa do Google Play
- Conquistar mais usuários e aumentar a retenção
Diretrizes
As diretrizes principais a seguir ajudam você a criar um app básico de alta qualidade.
Experiência do usuário
Seu app precisa ter padrões de interação e design visual do Android para oferecer uma experiência do usuário consistente e intuitiva.
Use os componentes do Material Design para criar a interface do usuário do seu app em vez dos componentes da plataforma Android sempre que possível. O Material Design oferece uma aparência moderna do Android e consistência de UI em todas as versões do SO.
| ID | Testes | Descrição |
|---|---|---|
| Usabilidade | ||
| Usabilidade:UX | T-Usability:Core, T-SD-Card |
O app oferece uma experiência do usuário consistente para todos os casos de uso em todos os formatos. |
| Usability:Switcher | T-Usability:Switcher, T-SD-Card |
O app vai para o segundo plano quando o foco muda para outro app. Ele volta para o primeiro plano quando é reativado no seletor de apps Recentes. |
| Usabilidade:sono | T-Usability:Sleep, 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. |
| Usabilidade:bloqueio | T-Usability:Lock, T-SD-Card |
Quando o app está em primeiro plano, ele é pausado quando o dispositivo é bloqueado e retomado quando é desbloqueado. |
| Interface do usuário | ||
| UI:Paridade | T-UI: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. |
| Interface:tela cheia | T-UI:Transitions |
O app preenche a janela em ambas as 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. |
| Interface:Transições | T-UI: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 ou perda de estado. |
| Qualidade visual | ||
| Visual:Display | T-Visual:Display |
O app exibe gráficos, textos, imagens e outros elementos da interface sem distorção, desfoque ou pixelização perceptível.
|
| Visual:legibilidade | T-Visual:Readability | O app garante a legibilidade do texto e dos blocos de texto limitando o comprimento da linha a 45 a 75 caracteres (incluindo espaços) para cada um dos idiomas disponíveis. |
| Visual:Temas | T-Visual:Themes | O conteúdo do app e todo o conteúdo da Web acessado por ele têm suporte a temas claros e escuros. |
| Navegação | ||
| Nav:BackButton | T-Nav:Back | O app é compatível com a navegação padrão pelo botão "Voltar" e não usa nenhuma solicitação personalizada desse botão na tela. |
| Nav:BackGesture | T-Nav:Back | O app é compatível com a navegação por gestos para voltar e ir para a tela inicial. |
| Nav:State | T-Nav:State, T-Nav:Back |
O app preserva o estado do usuário ou do aplicativo ao sair do primeiro plano e evita perdas acidentais de dados devido à navegação de retorno e a outras mudanças de estado. Ao retornar para o primeiro plano, o app restaura o estado preservado e as transações com estado pendentes. Isso inclui, por exemplo, mudanças em campos editáveis, progresso em jogos, menus, vídeos e outras seções do app.
|
| Notificações | ||
| Notify:Info | T-Notify:Info |
As notificações fornecem informações relevantes relacionadas ao seu app.
|
| Notify:Messaging | T-Notify:Info |
Para apps de mensagens, sociais e conversas, siga estas recomendações:
|
| Acessibilidade | ||
| Acesso:destinos | T-Access:destinos | As áreas de toque têm no mínimo 48 dp. Consulte as diretrizes de Layout e tipografia do Material Design (em inglês). |
| Acessar:Contraste | T-Access:Contrast (em inglês) |
O texto e o conteúdo em primeiro plano do app mantêm as seguintes taxas de contraste com o plano de fundo do app:
Saiba mais sobre cor e contraste. |
| Access:Description | T-Access:Description | Descreva cada elemento da interface,
exceto TextView, usando contentDescription. |
Funcionalidade
O app precisa implementar o seguinte comportamento funcional.
| ID | Testes | Descrição |
|---|---|---|
| Áudio | ||
| Áudio:Init | T-Audio:Init |
Quando o usuário inicia a reprodução de áudio, o app precisa executar uma das seguintes ações em até um segundo:
|
| Áudio:foco | T-Audio:Focus | O app precisa solicitar a seleção de áudio quando a reprodução for iniciada e abandonar essa seleção quando a reprodução for interrompida. |
| Áudio:interromper | T-Audio:Interrupt | O app precisa gerenciar as solicitações de outros apps para a seleção de áudio. Por exemplo, um app pode reduzir o volume da reprodução quando outro inicia uma fala. |
| Áudio:segundo plano | T-Audio:Background | O app precisa ser compatível com a reprodução em segundo plano. |
| Áudio:notificação | T-Audio:Notification | Quando o app toca áudio em segundo plano, ele precisa criar uma notificação estilizada com MediaStyle. |
| Áudio:Retomar | T-Audio:Resume | Se o app estiver em segundo plano e o áudio estiver pausado, ele será retomado quando o app voltar para o primeiro plano. Caso contrário, o app precisa indicar ao usuário que a reprodução está pausada. |
| Vídeo | ||
| Vídeo:picture-in-picture | T-Vídeo:PiP | Se o app reproduz vídeos, ele precisa ser compatível com a reprodução picture-in-picture. |
| Vídeo:codificação | T-Video:Encoding | Se o app codifica vídeos, isso precisa ser feito usando o padrão de compactação de vídeo HEVC. |
| Compartilhamento | ||
| Sharing:Sheet | T-Sharing:Sheet | 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 | ||
| Segundo plano:serviços | T-Background:Services |
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. Estes são exemplos de uso inadequado de serviços em segundo plano:
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.
| ID | Testes | Descrição |
|---|---|---|
| Desempenho | ||
| Performance:inicialização | T- Performance:Startup | O app carrega rapidamente ou, se leva mais de dois segundos para carregar, mostra feedback na tela para o usuário, como um indicador de progresso ou sugestão semelhante. |
| Performance:FPS | T-Performance:FPS | O app renderiza quadros a cada 16 (ou menos) milissegundos para mostrar pelo menos 60 quadros por segundo. Para ajuda com problemas de renderização, consulte Renderização lenta. |
| Performance:Strict | T-Performance:Strict | Com o StrictMode ativado (consulte a seção de teste StrictMode), nenhum flash vermelho (avisos de desempenho do StrictMode) fica visível ao testar o app. |
| Estabilidade | ||
| Estabilidade:ANR | T-Stability:ANR | O app não apresenta falhas nem bloqueia a linha de execução de IU, causando erros ANR (Android não está respondendo). 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 | ||
| SDK:Platform | T-SDK:Platform | O app é executado na última versão pública da Plataforma Android sem falhas e sem afetar drasticamente a funcionalidade principal. |
| SDK:Target | T-SDK:Latest | 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. |
| SDK:Compile | T-SDK:Latest | 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:3P | T-SDK:3P, T-SDK:Non |
Todos os SDKs do Google ou de terceiros usados estão atualizados. Qualquer melhoria nesses SDKs relacionada à estabilidade, compatibilidade ou segurança precisa 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. |
| SDK:Non | T-SDK:Non | O app não usa interfaces que não são SDK. |
| SDK:Debug | T-SDK:Debug | Nenhuma biblioteca de depuração está incluída no app de produção. As bibliotecas de depuração incluídas no app podem causar problemas de desempenho e de segurança. |
| Bateria | ||
| Bateria:gerenciar | T-Battery:Manage |
O app é compatível com os recursos de gerenciamento de energia Soneca e App em espera. Os apps podem pedir 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 trata dados e informações pessoais do usuário de modo seguro e oferece níveis de permissão adequados.
Os apps publicados na Google Play Store também precisam seguir as políticas de dados do usuário do Google Play para proteger a privacidade dos usuários.
| ID | Testes | Descrição |
|---|---|---|
| Permissões | ||
| Permissões:Min | T-Permissions:Min | O app solicita apenas as permissões mínimas absolutas necessárias para oferecer suporte ao caso de uso atual. Para algumas permissões, como a de localização, o app usa uma especificação aproximada em vez de exata, se possível. Consulte Minimizar suas solicitações de permissão. |
| Permissões:sensíveis | T-Permissions:Sensitive (em inglês) |
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. 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 pedir acesso. |
| Permissões:execução | T-Permissions:Runtime | O app solicita permissões de execução quando a funcionalidade é solicitada, e não durante a inicialização dele. |
| Permissions:Explain | T-Permissions:Explain | O app explica claramente por que as permissões são necessárias. |
| Permissões:Degrade | T-Permissions:Degrade | O app faz uma degradação suave quando os usuários negam ou revogam uma permissão. O app não pode impedir o acesso do usuário por completo. |
| Dados e arquivos | ||
| Data:Sensitive | T-Data:Sensitive, T-Data:Handling |
Todos os dados sensíveis são mantidos no armazenamento interno do app. |
| Dados:registro | T-Data:Log | Nenhum dado pessoal ou sensível do usuário é registrado no sistema ou em um registro específico do app. |
| Dados:IDs | T-Data:IDs | O app não usa IDs de hardware que não podem ser redefinidos, como o IMEI, para fins de identificação. |
| Identidade | ||
| Identity:Hints | T-Identity: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. |
| Identity:CredMan | T-Identity:CredMan | 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. |
| Identidade:biografia | T-Identity:Bio | 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 | ||
| Componentes:Exportar | T-Components:Export |
O app define o atributo Apenas componentes de aplicativo que compartilham dados com outros apps ou que deveriam ser invocados por outros apps são exportados. |
| Componentes:permissões | T-Components:Permissions |
Todas as intents e transmissões seguem as práticas recomendadas:
|
| Componentes:proteção | T-Components:Protection |
Todos os componentes que compartilham conteúdo entre apps usam Os apps não podem acessar uma lista de pacotes instalados. |
| Redes | ||
| Rede:tráfego | T-Network:Traffic | Todo o tráfego de rede é enviado por SSL. |
| Network:Config | T-Network:Config | O app declara uma configuração de segurança de rede. |
| Rede:Play | T-Network:Play | Se o app usar o Google Play Services, o provedor de segurança será inicializado com ele. |
| WebViews | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
Não use setAllowUniversalAccessFromFileURLs() para acessar o conteúdo local. Em vez disso, use WebViewAssetLoader. |
| WebViews:JavaScript | T-WebViews:JavaScript, T-WebViews:Nav |
As visualizações da Web não usam No Android 6.0 (nível 23 da API e mais recentes), use canais de mensagem HTML. |
| Execução | ||
| Execução:pacotes | T-Execution:Bundles |
O app não carrega dinamicamente códigos 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 | ||
| Criptografia:algoritmos | T-Crypto:Algorithms | O app usa algoritmos criptográficos e um gerador de números aleatórios fornecidos pela plataforma. Além disso, ele não implementa algoritmos personalizados. |
Google Play
Permita que seu app seja publicado no Google Play.
| ID | Testes | Descrição | |
|---|---|---|---|
| Políticas | |||
| Play:Policies | T-Play:Policies | O app obedece totalmente aos termos da Política de conteúdo do desenvolvedor do Google Play, não apresenta conteúdo inadequado e não usa a propriedade intelectual ou a marca de outros. | |
| Play:Maturidade | T-Play:Policies | O nível de maturidade do app está definido corretamente com base nas Diretrizes de classificação de conteúdo. | |
| Página de detalhes do app | |||
| Play:Graphics | T-Play:Graphics, T-Play:Assets |
O recurso gráfico do app segue as diretrizes descritas neste artigo de suporte. Confira se:
|
|
| Play:NonAndroid | T-Play:Assets | As capturas de tela e os vídeos do app não mostram nem fazem referência a dispositivos que não são Android. | |
| Play:enganoso | T-Play:Assets | As capturas de tela ou vídeos do app não representam o conteúdo e a experiência do seu aplicativo de forma enganosa. | |
| Suporte do usuário | |||
| Play:Bugs | T-Play:Policies | Os bugs comuns relatados pelos usuários na guia Avaliações da página do Google Play são resolvidos se forem reproduzíveis e ocorrerem em vários 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 disponíveis no mercado. Concentre-se em um pequeno número de dispositivos representativos, usando um ou dois modelos 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 grande 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 de destino, sempre teste 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 testar o desempenho, ative StrictMode no app. Use StrictMode para detectar operações que podem afetar o desempenho, os acessos à rede e as leituras e gravações de arquivos. Procure operações que podem ser problemáticas na linha de execução principal e em outras linhas de execução.
Configure uma política de monitoramento por linha de execução usando StrictMode.ThreadPolicy.Builder e ative todo o monitoramento compatível na
ThreadPolicy usando detectAll().
Ative a notificação visual das violações da política para a ThreadPolicy usando
penaltyFlashScreen().
Testes
Os testes de qualidade básica do app ajudam você a avaliar a qualidade fundamental do seu app. É possível combinar os testes ou integrar grupos de testes no seu planejamento.
Experiência do usuário
| ID | Recurso | Descrição |
|---|---|---|
| Usabilidade | ||
| T-Usability:Core | Usabilidade:UX |
Navegue por todas as partes do app: todas as telas, caixas de diálogo, configurações e todos os fluxos de usuários. Faça o seguinte:
|
| T-Usability:Switcher | Usabilidade:Switcher | Em cada tela do app, alterne para outro app em execução e volte para o que está em teste usando o seletor de apps Recentes. |
| T-Usability:Sleep | Usabilidade:dormir | Pressione o botão liga/desliga para colocar o dispositivo em suspensão e pressione-o novamente para ligar a tela. |
| T-Usability:Lock | Usabilidade:bloqueio | 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 | ||
| T-SD-Card | Usabilidade:UX |
Faça testes de funcionalidade principal com o app instalado no cartão SD do dispositivo, se o app for compatível com esse método de instalação. Para mover o app para um cartão SD, consulte as Configurações do app. |
| Interface do usuário | ||
| T-UI:Transições | UI:Parity, UI:Fullscreen, UI:Transitions |
Em cada tela do app, gire o dispositivo entre as orientações paisagem e retrato e os estados dobrado e desdobrado pelo menos três vezes. Verifique se o app faz o seguinte:
|
| Qualidade visual | ||
| T-Visual:Display | Visual:Display | Use todos os recursos do app. Verifique se todos os recursos visuais, incluindo gráficos, texto, imagens e outros elementos da interface do usuário, não têm distorção, desfoque ou pixelização. |
| T-Visual:Readability | Visual:legibilidade |
Revise todos os blocos de texto no app. Verifique se o texto e o comprimento da linha do bloco de texto estão limitados a 45 a 75 caracteres (incluindo espaços) para facilitar a leitura. Verifique o seguinte:
|
| T-Visual:Themes | Visual:Temas | 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. |
| Navegação | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
Navegue por todas as partes do app: todas as telas, caixas de diálogo, configurações e todos os fluxos de usuários. 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-Nav:State | Nav:State | Em cada tela do app, pressione o botão Home do dispositivo ou deslize para cima na navegação por gestos. Depois, reinicie o app na tela Todos os apps. |
| Notificações | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
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 | ||
| T-Access:Targets | Acessar:destinos | 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-Access:Contrast | Acesso:contraste | Verifique o contraste de todos os elementos visuais. |
| T-Access:Description | Access:Description | Verifique se todos os elementos da interface, exceto TextView, têm descrições de conteúdo. |
Funcionalidade
| ID | Recurso | Descrição |
|---|---|---|
| Áudio | ||
| T-Audio:Init | Audio:Init | Iniciar a reprodução de áudio. Verifique se, em um segundo, o app começa a tocar o áudio ou fornece um indicador visual de que os dados de áudio estão sendo preparados para reprodução. |
| T-Audio:Focus | Áudio:foco | Iniciar a reprodução de áudio. O app precisa solicitar a seleção de áudio. Quando a reprodução de áudio para, o app precisa liberar o foco de áudio, o que acontece automaticamente em apps direcionados ao Android 12 (nível 31 da API) e versões mais recentes. |
| T-Audio:Interrupt | Áudio:Interrupt | Iniciar a reprodução de áudio. Inicie a reprodução de áudio em outro app. Seu app precisa responder à mudança na seleção de áudio e interromper a reprodução ou reduzir o volume. |
| T-Audio:Background | Áudio:segundo plano | Iniciar a reprodução de áudio. Interaja com outro app não relacionado a áudio em primeiro plano. O app precisa continuar tocando áudio em segundo plano. |
| T-Audio:Notification | Áudio:notificação | Iniciar a reprodução de áudio. Interaja com outro app não relacionado a áudio em primeiro plano. Verifique se o app continua tocando áudio em segundo plano e se criou uma notificação estilizada com MediaStyle. Consulte Como usar os controles de mídia. |
| T-Audio:Resume | Áudio:retome | Iniciar a reprodução de áudio. Interaja com outro app que não seja de áudio como o app em primeiro plano. Interaja com seu app para que ele seja o principal. O áudio vai ser retomado ou o volume vai ser restaurado. Caso contrário, o app precisa indicar ao usuário que a reprodução está pausada. |
| T-Video:PiP | Vídeo:PiP | Ative a reprodução de vídeo do app no modo picture-in-picture. |
| T-Video:Encoding | Vídeo:codificação | Verifique se o app codifica vídeos usando o padrão de compactação de vídeo HEVC. |
| Compartilhamento | ||
| Compartilhamento:planilha | Crie uma intent e inicie uma atividade chamando startActivity() com a intent como argumento. Consulte Usar o Android Sharesheet. O app precisa mostrar o Android Sharesheet. |
|
| Serviços em segundo plano | ||
| CR-6 | Informações gerais:serviços | Use todos os principais recursos do app. Verifique se nenhum serviço em segundo plano de longa duração foi iniciado. Alterne para outro app para enviar o seu para o segundo plano. Acesse Configurações e confira se o app está executando algum serviço enquanto está em segundo plano. No Android 4.0 e mais recentes, acesse a tela Apps e localize o app na guia Em execução. |
Desempenho e estabilidade
| ID | Recurso | Descrição |
|---|---|---|
| Desempenho | ||
| T- Performance:Startup | Performance:Startup | Inicie o app. Verifique se ele carrega rapidamente ou mostra um indicador de progresso ou sugestão semelhante se levar mais de dois segundos para carregar. |
| T-Performance:FPS | Performance:QPS | Use todos os principais recursos do app. Verifique se ele renderiza pelo menos 60 frames por segundo. Use a opção Criar perfil de renderização de HWUI para ajudar a testar seu app. |
| T-Performance:Strict | Performance:Strict |
Ative o Preste muita atenção à coleta de lixo e ao impacto dela na experiência do usuário. |
| Estabilidade | ||
| T-Stability:ANR | Estabilidade:ANR | Use todos os principais recursos do app. Verifique se ele não falha nem bloqueia a linha de execução de interface, causando erros de ANR (Android não está respondendo). Analise o relatório de pré-lançamento do Google Play para identificar possíveis problemas de estabilidade. |
| SDK | ||
| T-SDK:Platform | SDK:Platform | Execute o app na versão pública mais recente da plataforma Android. Use todos os principais recursos. Verifique se o app não falha e é executado sem perda de funcionalidade principal. |
| T-SDK:Latest | SDK:Target, SDK:Compile |
Revise o arquivo de manifesto do Android e a configuração do build para garantir que o app seja compilado de acordo com o SDK mais recente disponível (targetSdk e compileSdk). |
| T-SDK:3P | SDK:3P | Revise o arquivo build.gradle do app para ver se há dependências desatualizadas. |
| T-SDK:Non | SDK:Non | Use a ferramenta lint do Android Studio para detectar o uso de interface que não é SDK. Consulte Restrições para interfaces que não são SDK para conhecer métodos de teste alternativos. |
| T-SDK:Debug | SDK:Debug | Analise o arquivo build.gradle do app para verificar se há bibliotecas de depuração incluídas. |
| Bateria | ||
| T-Battery:Manage | Bateria:gerenciar |
Use todos os principais recursos do app nos modos Soneca e App em espera. Verifique se alarmes, timers, notificações e sincronizações funcionam corretamente na janela de manutenção do modo Soneca e quando o app sai do modo App em 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 orientações. Para diagnosticar o consumo inesperado da bateria, use o Power Profiler do Android Studio ou a ferramenta Battery Historian combinada com trabalho planejado em segundo plano. |
Privacidade e segurança
| ID | Recurso | Descrição |
|---|---|---|
| Permissões | ||
| T-Permissions:Min | Permissões:Min | Revise todas as permissões exigidas pelo app no arquivo de manifesto (no momento da execução) e nas configurações do app no dispositivo (Configurações > Informações do app). |
| T-Permissions:Sensitive | Permissões:sensíveis | Use todos os recursos do app que pedem 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 para dados e serviços sensíveis são comunicadas claramente ao usuário. |
| T-Permissions:Runtime | Permissões:tempo de execução | Use todos os recursos do app que exigem permissões. Verifique se as permissões são solicitadas de forma lenta, ou seja, apenas quando os recursos são acessados, e não durante a inicialização do app. |
| T-Permissions:Explain | Permissões:explicar | 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-Permissions:Degrade | Permissões:redução | Use todos os recursos do app que exigem permissões. Negue ou revogue as permissões. Verifique se o app oferece um caso de uso alternativo e continua funcionando. |
| Dados e arquivos | ||
| T-Data:Sensitive | Data:Sensitive | Revise todos os dados armazenados no armazenamento interno. Verifique se os dados armazenados externamente não são sensíveis. |
| T-Data:Handling | Data:Sensitive | Revise como os dados carregados do armazenamento externo são gerenciados e tratados. |
| T-Data:Log | Dados:registro | Use todos os principais recursos do app enquanto monitora o registro do dispositivo. Verifique se nenhuma informação particular do usuário foi registrada. |
| T-Data:IDs | Dados: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. |
| Identidade | ||
| T-Identity:Hints | Identidade:dicas | Use todos os recursos do app que exigem entrada do usuário. Verifique se o app oferece dicas para preencher automaticamente campos de entrada de dados, como credenciais da conta e outras informações sensíveis. |
| T-Identity:CredMan | Identidade:CredMan | Faça login no app. Verifique se ele integra o Credential Manager para Android para uma experiência de login que unifica o suporte a chaves de acesso, identidade federada e senhas. |
| T-Identity:Bio | Identidade:biografia | Use 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 autenticação biométrica. |
| Componentes do app | ||
| T-Components:Export | Componentes:exportação | 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-Components:Permissions | Componentes:Permissions | Revise todas as permissões exigidas pelo app no arquivo de manifesto, no momento da execução e nas configurações do app no dispositivo (Configurações > Informações do app). |
| T-Components:Protection | Componentes:proteção | Revise todos os provedores de conteúdo definidos no arquivo de manifesto do Android. Confira se cada provedor tem um protectionLevel apropriado. |
| Redes | ||
| T-Network:Traffic | Rede:tráfego | Declare uma configuração de segurança de rede que desative o tráfego de texto não criptografado e depois teste o app. |
| T-Network:Config | Network:Config | Revise a configuração de segurança de rede do app. Verifique se não há falhas na verificação de lint na configuração. |
| T-Network:Play | Rede:Play | Verifique se o provedor de segurança foi inicializado na inicialização do aplicativo para o Google Play Services. |
| WebViews | ||
| T-WebViews:Config | WebViews:Config | Revise a configuração de segurança de rede do app. Verifique se não há falhas na verificação de lint na configuração. |
| T-WebViews:JavaScript | WebViews:JavaScript | Para cada WebView, navegue até uma página que requer JavaScript. |
| T-WebViews:Nav | WebViews:Config, WebViews:JavaScript |
Em cada WebView, tente navegar para sites e conteúdo que não sejam carregados diretamente pelo seu app. |
| Execução | ||
| T-Execution:Bundles | Execução:pacotes | Verifique se o app usa Android App Bundles e não carrega dinamicamente códigos de fora do APK. |
| Criptografia | ||
| T-Crypto:Algorithms | Crypto:Algorithms | Verifique se o app usa um gerador de números aleatórios e algoritmos criptográficos fortes fornecidos pela plataforma. Além disso, verifique se o app não implementa algoritmos personalizados. |
Google Play
| ID | Recurso | Descrição |
|---|---|---|
| Políticas | ||
| T-Play:Policies | Play:Policies, Play:Maturity, Play:Bugs |
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 | ||
| T-Play:Graphics | Play:Graphics | 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:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
Revise todos os recursos gráficos, os conteúdos de mídia, textos, bibliotecas de código e outros conteúdos inclusos no pacote do app ou do download do arquivo de extensão. |
Arquivar
Versões anteriores das principais diretrizes de qualidade de apps: