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, seu app funcionará exatamente como o esperado, mas em outros casos pode ser necessário fazer modificações no app para se adaptar às mudanças de plataforma.

Como os usuários poderão 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 como esperado pelos usuários e usufruindo dos novos recursos e APIs para aproveitar ao máximo a nova plataforma.

Este documento oferece 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 os 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 a versão 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 já existente com o 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 app. Por isso, é importante fazer testes preliminares e detalhados e fazer os ajustes necessários no app.

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 se você não mudar o targetSdkVersion.

Realizar testes de compatibilidade

Na maioria dos casos, testar a compatibilidade com o Android 11 é semelhante ao tipo de teste que você realizaria ao se preparar para lançar o app. Esse é um bom momento para analisar as principais diretrizes de qualidade do app 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 nele. Em particular, revise as principais mudanças de privacidade e teste as correções que você implementar 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 atento aos 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, recomendamos publicar o app compatível imediatamente. Isso permite que os usuários testem o app com antecedência e ajuda você a oferecer uma transição tranquila para os usuários ao fazer 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ê pode fazer isso assim que estiver tudo pronto. Não se esqueça do requisito do Google Play para definir a nova plataforma como destino.

À 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 tomar conhecimento delas com antecedência. Para ajudar a avaliar os impactos, você também pode usar os controles de compatibilidade para testar seu app atual com as mudanças selecionadas ativadas.

As etapas a seguir descrevem como oferecer suporte total ao 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, mude a targetSdkVersion e a compileSdkVersion para "30" e recompile o app. Consulte o guia de configuração para 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 ele funciona corretamente ao ser direcionado ao Android 11. Algumas mudanças de comportamento se aplicam somente quando o app é criado para a nova plataforma. Portanto, convém revisar 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. Especificamente, 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 não SDK restritas 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 apresenta um novo recurso para desenvolvedores que facilita os testes 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.