No ChromeOS, temos o compromisso de aprimorar ferramentas e estruturas de desenvolvedores para que os desenvolvedores de apps Android possam otimizar os apps para Chromebooks sem problemas. Para isso, precisamos buscar constantemente maneiras de oferecer aos desenvolvedores conjuntos de ferramentas impactantes para melhorar a experiência de criação para telas grandes e o ChromeOS.
O ChromeOS evoluiu ao longo dos anos à medida que novos desafios surgiram. Um desses desafios é identificar problemas críticos para os engenheiros com antecedência e frequência. As regras do Lint são essenciais para a qualidade, já que fornecem aos desenvolvedores indicadores de problemas que vão surgir se não forem corrigidos. Nossas regras de lint atualizadas oferecem aos desenvolvedores mais visibilidade sobre como os apps deles são executados no ChromeOS, mostrando problemas de software e hardware que, sem dúvida, vão causar problemas para aplicativos Android executados em qualquer dispositivo ChromeOS.
Para mais contexto sobre a existência e a importância dessas regras de lint, leia nossa postagem do blog.
Onde estão essas regras de lint?
Estamos em desenvolvimento ativo há alguns meses. Com o cronograma de lançamento do Android Studio, algumas regras do lint estão sendo introduzidas com os builds Canary do Electric Eel. Algumas dessas regras de lint também estão disponíveis nas versões Canary do Flamingo. Vamos continuar trabalhando para incluir esses recursos nas versões estáveis do Android Studio nos próximos meses.
Outro ponto importante é que essas regras serão ativadas por padrão em versões mais recentes do Android Studio. O objetivo é ter uma orientação mais forte sobre como queremos ajudar os engenheiros a criar para o ChromeOS e telas maiores no futuro.
Novas regras de lint (atualizadas no Flamingo Canary 3)
Suporte à ABI x86/x86_64
A maioria dos Chromebooks funciona com a arquitetura Intel, o que os torna uma plataforma arquitetônica predominantemente x86. Para que o ChromeOS seja compatível corretamente quando o código NDK é incluído como parte do binário, ter x86 é um aumento de desempenho devido à remoção da tradução necessária das bibliotecas ARM. Portanto, é altamente recomendável que sua equipe de desenvolvimento adicione suporte à arquitetura x86 ou, de preferência, x86_64, já que isso seria um benefício de desempenho para qualquer código nativo no ChromeOS ou em qualquer dispositivo Intel.
Solução
Se possível, adicione x86 e x86_64 dentro de abiSplits em build.gradle. Além disso, adicione o código às pastas adequadas para oferecer suporte a essas ABIs. Para mais informações, consulte a documentação sobre ABIs do Android e a palestra sobre compatibilidade com ABI do ADS.
Observação:verifique se as bibliotecas de terceiros incluídas que estão sendo usadas também têm binários x86 e x86_64.
Limitação de hardware do ChromeOS
A maioria dos dispositivos ChromeOS vem com um conjunto menor de sensores de hardware e outros recursos em comparação com um smartphone Android. O objetivo dessa regra é informar aos desenvolvedores que, se você estiver usando a flag <uses-feature> com android:required=true, seu app não vai estar disponível na Google Play Store no ChromeOS. Uma recomendação importante para garantir que seu app possa ser acessado no maior número possível de dispositivos é garantir que o recurso de hardware não seja obrigatório por padrão. Em vez disso, adicione um código de defesa para verificar o hardware específico no tempo de execução. Um exemplo disso seria
<uses-feature android:name="android.hardware.camera" android:required="true">
Solução
Verifique se os recursos do seu aplicativo são realmente necessários. Se não forem, mude o parâmetro android:required para false e adicione programação defensiva quando as chamadas de API forem necessárias. Para mais informações, consulte a documentação sobre recursos declarados explicitamente.
Atividades não redimensionáveis
Por padrão, o Android Runtime para ChromeOS, que executa o Android R ou mais recente em Chromebooks, inicia um app Android na versão para smartphone ou tablet do aplicativo, com base no estado padrão da interface. No entanto, há uma terceira opção que oferece uma experiência melhor para usuários do ChromeOS: o modo redimensionável. Ao ativar essa flag como parte da sua atividade, os usuários que podem usar o aplicativo em qualquer ambiente de várias janelas podem aproveitar o redimensionamento do aplicativo para o tamanho adequado. Com essas mudanças, os usuários poderão dimensionar a interface de acordo com as necessidades. Depois de adicionar essas mudanças ao manifesto, teste o aplicativo no emulador de computador referenciado abaixo.
Solução
Adicione o atributo resizableActivity="true" à sua atividade no arquivo AndroidManifest.xml. Para mais informações, consulte a documentação sobre restrições de tela grande.
Alterações de configuração
Uma grande ressalva sobre telas redimensionáveis é que onConfigurationChanged() é chamado sempre que um usuário muda o tamanho do aplicativo. Se o app estiver emitindo uma atualização completa dentro desse método, haverá implicações de desempenho associadas a ele. No momento, estamos verificando se finish() não é chamado em onConfigurationChanged, já que você precisa processar o savedInstanceState com mais granularidade em vez de forçar uma nova renderização completa. Vamos continuar encontrando casos em que a degradação de performance vai ocorrer e atualizar essa regra de acordo com isso.
Solução
Verifique se finish() não é chamado na API onConfigurationChanged() nas suas atividades e fragmentos. Para mais informações, consulte a documentação sobre gerenciar mudanças de configuração.
Compatibilidade com teclado e mouse
Com o aumento da adoção do Jetpack Compose, queríamos garantir que a criação com essas bibliotecas também incluísse a funcionalidade de suporte a mouse e teclado no futuro. Com o tempo, vamos continuar aumentando a usabilidade do mouse, teclado, trackpad e outras interações periféricas. Para ter as experiências de referência, atualize as dependências do Gradle para as versões mínimas necessárias.
Solução
Atualize androidx.compose.foundation:foundation para a versão 1.2 ou mais recente. Para mais informações, consulte as notas da versão do Compose.
Dica:90% dos usuários interagem com apps em Chromebooks usando um teclado e um mouse. (Fonte: dados internos do Google de 2022*)
Feedback
A equipe está sempre buscando melhorar essas ferramentas e a documentação sobre otimizações para telas grandes. Uma etapa fundamental desse processo é enviar feedback sobre a precisão e a utilidade das regras de lint implantadas no Android Studio. Para isso, envie feedback sobre a regra. Quando a regra do lint aparecer no Android Studio, clique em "Enviar feedback sobre este aviso". Um diálogo semelhante ao abaixo vai aparecer. Quanto mais precisas e descritivas forem as informações, mais rápido poderemos fazer as mudanças adequadas.
