Migrar apps para o Android 11

A cada versão do Android, introduzimos novos recursos e mudanças de comportamento com o objetivo de tornar o Android mais útil, mais seguro e melhorar o desempenho. Em muitos casos, o app vai funcionar exatamente como o esperado, mas em outros casos pode ser necessário fazer mudanças para se adaptar às mudanças da plataforma.

Como os usuários podem começar a receber a nova plataforma assim que o código-fonte for lançado para o AOSP (Android Open Source Project), é importante que os apps estejam prontos, funcionando conforme o esperado para os usuários e aproveitando os novos recursos e APIs para aproveitar ao máximo a nova plataforma.

Este documento apresenta uma visão geral das fases típicas de desenvolvimento e teste que podem ajudar você a se preparar para acompanhar o cronograma de lançamento da plataforma e garantir uma ótima experiência para seus usuários no Android 11.

Uma migração típica tem duas fases, que podem ser simultâneas:

  • Garantir a compatibilidade com o app (até a versão final do Android 11)
  • Direcionar aos novos recursos e APIs da plataforma (assim que possível após o lançamento final)

Esta página descreve as etapas gerais para cada uma dessas fases. Quando estiver tudo pronto para começar, leia Instalar o Android 11.

Garantir a compatibilidade com o Android 11

É importante testar a funcionalidade do app existente no Android 11 para garantir uma ótima experiência para os usuários que atualizarem para a versão mais recente do Android. Algumas mudanças na plataforma podem afetar o comportamento do seu app. Por isso, é importante fazer testes preliminares e detalhados e os ajustes necessários.

Normalmente, é possível modificar o app e publicar uma atualização sem precisar mudar o targetSdkVersion. Da mesma forma, não é necessário usar novas APIs ou mudar a compileSdkVersion, embora isso possa depender da forma como seu app foi criado e da funcionalidade da plataforma que ele está usando. As seções a seguir descrevem as etapas.

Antes de começar, familiarize-se com as mudanças de comportamento que podem afetar seu app, mesmo que você não mude a targetSdkVersion.

Realizar testes de compatibilidade

Na maioria dos casos, testar a compatibilidade com o Android 11 é semelhante ao tipo de teste que você realiza ao se preparar para lançar o app. Esse é um bom momento para analisar as principais diretrizes de qualidade de apps e as práticas recomendadas para testes.

Basta instalar o app publicado em um dispositivo com o Android 11 e trabalhar com todos os fluxos e funcionalidades buscando encontrar problemas. Para ajudar você a concentrar seus testes, analise as mudanças de comportamento introduzidas no Android 11 que podem afetar a função do app ou causar uma falha. Especificamente, analise as principais mudanças de privacidade e teste todas as correções implementadas para acomodar as mudanças.

Além disso, revise e teste os usos de interfaces restritas não SDK e mude para os equivalentes públicos do SDK ou do NDK. Fique de olho nos avisos do Logcat que destacam esses acessos e usam o método StrictMode detectNonSdkApiUsage() para capturá-los de maneira programática.

Por fim, teste totalmente as bibliotecas e os SDKs no app para garantir que eles funcionem conforme o esperado no Android 11 e siga as práticas recomendadas de privacidade, desempenho, UX, manipulação de dados e permissões. Se você encontrar um problema, tente atualizar para a versão mais recente do SDK ou entre em contato com o desenvolvedor do SDK para receber ajuda.

Quando terminar o teste e fizer as atualizações, é recomendável publicar o app compatível imediatamente. Isso permite que os usuários testem o app com antecedência e ajuda você a fornecer uma transição tranquila para os usuários à medida que eles fazem a atualização para o Android 11.

Atualizar versão de destino do app e criar com novas APIs

Depois de publicar a versão compatível do app, conforme descrito anteriormente, a próxima etapa é adicionar suporte total ao Android 11, atualizando a targetSdkVersion e aproveitando os novos APIs e recursos do Android 11. Você poderá fazer isso assim que estiver tudo pronto. Não se esqueça do requisito do Google Play para definir a nova plataforma.

À medida que você planejar seu trabalho para oferecer compatibilidade total com o Android 11, um bom ponto de partida é analisar as mudanças de comportamento que se aplicam a apps destinados ao Android 11. Essas mudanças esperadas de comportamento podem causar problemas funcionais que talvez você precise resolver. Em alguns casos, elas podem exigir um desenvolvimento significativo. Por isso, é melhor aprender sobre elas com antecedência. Para ajudar você a avaliar os impactos, use as alternâncias de compatibilidade para testar o app atual com as mudanças selecionadas ativadas.

As etapas a seguir descrevem como oferecer compatibilidade total com o Android 11.

Acessar o SDK, alterar o destino, criar com novas APIs

Para começar a usar a compatibilidade total com o Android 11, primeiro faça o download do SDK do Android 11 (e de outras ferramentas necessárias) no Android Studio. Em seguida, altere targetSdkVersion e compileSdkVersion para "30" e recompile o app. Consulte o guia de configuração para ver mais detalhes.

Testar o app para Android 11

Depois de compilar o app e instalá-lo em um dispositivo com o Android 11, comece a testar para garantir que o app funciona corretamente quando destinado ao Android 11. Algumas mudanças de comportamento se aplicam somente quando o app é direcionado à nova plataforma. Por isso, analise essas mudanças antes de começar.

Assim como nos testes básicos de compatibilidade, trabalhe em todos os fluxos e funcionalidades para verificar se há problemas. Concentre seus testes nas mudanças de comportamento para apps destinados ao Android 11. Revise as mudanças de privacidade e teste todas as correções implementadas para acomodar as mudanças. Também é um bom momento para verificar se o app está de acordo com as principais diretrizes de qualidade de apps e as práticas recomendadas para testes.

Revise e teste os usos de interfaces restritas não SDK que possam ser aplicadas. Fique de olho nos avisos do Logcat que destacam esses acessos e usam o método StrictMode detectNonSdkApiUsage() para capturá-los de maneira programática.

Por fim, teste totalmente as bibliotecas e os SDKs no app para garantir que eles funcionem conforme o esperado no Android 11 e siga as práticas recomendadas de privacidade, desempenho, UX, manipulação de dados e permissões. Se você encontrar um problema, tente atualizar para a versão mais recente do SDK ou entre em contato com o desenvolvedor do SDK para receber ajuda.

Testar usando alternâncias de compatibilidade de apps

O Android 11 introduz um novo recurso para desenvolvedores que facilita o teste do app com mudanças de comportamento esperadas. Para um app depurável, as alternâncias permitem que você:

  • Teste as mudanças esperadas sem realmente mudar a targetSdkVersion do app. Você pode usar as alternâncias para forçar a ativação de mudanças específicas de comportamento esperado e avaliar o impacto no app existente.
  • Concentre seus testes somente em mudanças específicas. Em vez de ter que resolver todas as mudanças esperadas de uma só vez, as alternâncias permitem as desativar, exceto as que você quer testar.
  • Gerencie alternâncias por meio do adb. Você pode usar comandos adb para ativar e desativar as mudanças alternáveis no seu ambiente de teste automatizado.
  • Depure mais rapidamente usando códigos de mudança padrão. Cada uma delas tem um ID e um nome exclusivos que podem ser usados para depurar rapidamente a causa raiz na saída do registro.

À medida que você se prepara para mudar a versão de destino do seu app ou enquanto está em desenvolvimento para a compatibilidade com o Android 11, as alternâncias podem ajudar. Consulte a documentação correspondente para mais detalhes.