O Android 6.0 oferece uma oportunidade de garantir que seus apps funcionem com a próxima versão da plataforma. Essa versão inclui uma série de mudanças de comportamento e APIs que podem afetar seu app, conforme descrito em Visão geral da API e Mudanças de comportamento. No teste do app com essa versão, há algumas alterações de sistema específicas em que você deve se concentrar para garantir que os usuários tenham uma boa experiência.
Este guia descreve quais recursos do Android 6.0 testar e como testá-los com o app. Priorize o teste desses recursos específicos devido ao grande impacto potencial no comportamento do app:
Teste de permissões
O novo modelo de Permissões muda a maneira como as permissões são alocadas ao seu app pelo usuário. Em vez de conceder todas as permissões durante o procedimento de instalação, o app precisa pedir permissões individuais ao usuário em tempo de execução. Para os usuários, esse comportamento fornece um controle mais granular sobre as atividades de cada app, bem como um melhor contexto para entender por que o app está solicitando uma permissão específica. Os usuários podem conceder ou revogar as permissões concedidas a um app individualmente a qualquer momento. É provável que esse recurso da versão tenha impacto no comportamento do seu app e impeça que alguns recursos funcionem ou funcionem em um estado degradado.
Essa mudança afeta todos os apps em execução na nova plataforma, mesmo aqueles que não são destinados à nova versão da plataforma. A plataforma oferece um comportamento de compatibilidade limitado para aplicativos legados, mas você deve começar a planejar a migração do aplicativo para o novo modelo de permissões agora, com o objetivo de publicar uma versão atualizada do aplicativo no lançamento oficial da plataforma.
Dicas de teste
Use as dicas a seguir para planejar e executar os testes do app com o novo comportamento das permissões.
- Identifique as permissões atuais do aplicativo e os caminhos de código relacionados.
- Teste o fluxo de usuários entre serviços e dados protegidos por permissão.
- Teste várias combinações de permissões negadas/concedidas.
- Use a ferramenta
adb
para gerenciar permissões pela linha de comando:- Liste as permissões e os status por grupo:
adb shell pm list permissions -d -g
- Conceda ou negue uma ou mais permissões usando a seguinte sintaxe:
adb shell pm [grant|revoke] <permission.name> ...
- Liste as permissões e os status por grupo:
- Analise o aplicativo para descobrir os serviços que usam permissões.
Estratégia de teste
A mudança de permissões afeta a estrutura e o design do app, bem como a experiência do usuário e os fluxos fornecidos a ele. Avalie o uso atual das permissões do app e comece a planejar os novos fluxos que quer oferecer. A versão oficial da plataforma fornece comportamento de compatibilidade, mas é preciso planejar a atualização do app e não depender totalmente destes comportamentos.
Identifique as permissões de que o app realmente precisa e usa e, em seguida, encontre os vários caminhos
de código que usam os serviços protegidos por permissões. É possível fazer isso combinando testes na nova plataforma e análise de código. Nos testes, você deve se concentrar em usar
as permissões em tempo de execução, alterando a targetSdkVersion
do app para o nível 23 da API.
Teste com várias combinações de permissões revogadas e adicionadas para destacar os fluxos de usuário que dependem de permissões. Caso uma dependência não seja óbvia ou lógica, considere refatorar ou compartimentalizar esse fluxo para eliminar a dependência ou esclarecer por que a permissão é necessária.
Para mais informações sobre o comportamento das permissões em tempo de execução, testes e práticas recomendadas, consulte Como trabalhar com permissões do sistema.
Teste de soneca e App em espera
Os recursos de economia de energia de App em espera e soneca limitam a quantidade de processamento em segundo plano que o app pode realizar quando um dispositivo está no estado ocioso ou enquanto não está em foco. As restrições que o sistema pode impor aos apps inclui acesso limitado ou restrito a redes, suspensão de tarefas em segundo plano, suspensão de notificações, solicitações de soneca ignoradas e alarmes. Para garantir que o app se comporte adequadamente com essas otimizações de economia de energia, teste-o simulando esses estados de baixa energia.
Testar o app com o Soneca
Para testar a Soneca com o aplicativo:
- Configure um dispositivo de hardware ou dispositivo virtual com uma imagem do sistema Android 7.0 (API de nível 24).
- Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.
- Execute o aplicativo e deixe-o ativo.
- Simule o dispositivo acessando o modo Soneca por meio da execução dos seguintes comandos:
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- Observe o comportamento do aplicativo quando o dispositivo for reativado. Confira se ele se recupera corretamente quando o dispositivo sai do modo Soneca.
Testar aplicativos com App em espera
Para testar o modo App em espera:
- Configure um dispositivo de hardware ou dispositivo virtual com uma imagem do sistema Android 7.0 (nível 24 da API).
- Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.
- Execute o aplicativo e deixe-o ativo.
- Simule o aplicativo acessando o modo de espera por meio da execução dos seguintes comandos:
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- Simule o despertar do aplicativo usando o seguinte comando:
$ adb shell am set-idle <packageName> false
- Observe o comportamento do aplicativo quando ele for despertado. Certifique-se de que ele se recupere corretamente do modo de espera. Em particular, verifique se as notificações e os jobs de segundo plano do app continuam funcionando como esperado.
Backup automático para aplicativos e identificadores específicos do dispositivo
Caso o app esteja persistindo algum identificador específico do dispositivo, como o ID de registro do Google Cloud Messaging, no armazenamento interno, siga as práticas recomendadas para excluir o local de armazenamento do backup automático, conforme descrito em Fazer backup de dados do usuário com o backup automático.