Começar a desenvolver apps para o Chrome OS

Os dispositivos do Chrome OS, assim como os Chromebooks, agora são compatíveis com a Google Play Store e apps Android. Este artigo presume que você tenha um app Android desenvolvido para smartphones ou tablets que queira otimizar para Chromebooks. Para aprender os conceitos básicos da criação de apps Android, consulte Como criar seu primeiro aplicativo.

Atualizar o arquivo de manifesto do app

Para começar, atualize seu arquivo de manifesto para tratar algumas diferenças importantes de hardware e software entre Chromebooks e outros dispositivos que executam o Android.

A partir da versão M53 do Chrome OS, todos os apps para Android que não exigem explicitamente o recurso android.hardware.touchscreen também funcionarão em dispositivos Chrome OS compatíveis com o recurso android.hardware.faketouch. No entanto, para garantir que seu app funcione em todos os Chromebooks, abra o arquivo de manifesto e ajuste as configurações para que o recurso android.hardware.touchscreen não seja necessário, conforme mostrado no exemplo a seguir. Ao remover o requisito de entrada por toque, você também precisa revisar a compatibilidade do seu app com interações do mouse e do teclado.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
              ... >
        <!-- Some Chromebooks don't support touch. Although not essential,
             it's a good idea to explicitly include this declaration. -->
        <uses-feature android:name="android.hardware.touchscreen"
                      android:required="false" />
    </manifest>
    

Dispositivos de hardware diferentes têm diferentes conjuntos de sensores. Apesar de dispositivos portáteis Android frequentemente terem GPS e acelerômetros, não é garantido que todos os Chromebooks tenham sensores disponíveis. No entanto, há casos em que a funcionalidade de um sensor é fornecida de outra forma. Por exemplo, apesar de os Chromebooks não terem sensores de GPS, eles ainda fornecem dados de localização com base em conexões Wi-Fi. Consulte o documento Visão geral dos sensores para conhecer todos os sensores compatíveis com a plataforma Android. Se você quiser que o app seja executado em Chromebooks, independentemente da compatibilidade com o sensor, será preciso atualizar o arquivo de manifesto para que nenhum dos sensores seja necessário.

Alguns recursos de software não são aceitos em Chromebooks. Por exemplo, apps que fornecem IMEs personalizados, widgets de app, planos de fundo interativos e inicializadores de apps não são compatíveis e não estarão disponíveis para instalação em Chromebooks. Para ver uma lista completa de recursos de software que não são compatíveis atualmente com os Chromebooks, consulte os recursos de software incompatíveis.

Atualizar seu SDK de destino

Ao atualizar o atributo targetSdkVersion para o nível de API mais recente disponível, seu app poderá aproveitar todas as melhorias feitas na plataforma Android. Por exemplo, o Android 7.0 (API de nível 24) oferece melhorias de compatibilidade com várias janelas. Ele permite que você redimensione as atividades com formato livre, fazendo com que pareçam mais naturais. Você também pode acessar APIs para operações de arrastar e soltar entre apps e cursores de mouse personalizados.

Verificar os requisitos de rede

Os Chromebooks executam todo o sistema operacional Android em um contêiner, semelhante ao Docker ou ao LXC. Isso significa que o Android não terá acesso direto à interface da LAN do sistema. Em vez disso, o tráfego IPv4 passará por uma camada interna de conversão de endereços de rede (NAT) e o tráfego unicast IPv6 será roteado por meio de um salto extra. Conexões unicast de saída de um app Android para a Internet geralmente funcionam do modo em que se encontram, mas geralmente as conexões de entrada são bloqueadas. Pacotes multicast ou broadcast do Android não serão encaminhados para a LAN pelo firewall.

Como uma exceção especial à restrição de multicast, o Chrome OS executa um serviço que encaminha o tráfego mDNS entre o Android e a interface da LAN. Portanto, as APIs padrão de descoberta de serviço de rede são a maneira recomendada de descobrir outros dispositivos no segmento de LAN. Depois de encontrar um dispositivo na LAN, um app Android pode usar soquetes unicast TCP ou UDP padrão para se comunicar com ele.

As conexões IPv4 originárias do Android usarão o endereço IPv4 do host do Chrome OS. Internamente, o app Android verá um endereço IPv4 privado atribuído à interface de rede. As conexões IPv6 originárias do Android usarão um endereço diferente do host do Chrome OS, porque o contêiner do Android terá um endereço IPv6 público dedicado.

Usar nuvem e armazenamento local de forma eficaz

Um dos melhores recursos do Chromebook é que os usuários podem migrar facilmente de um dispositivo para outro. Ou seja, se alguém para de usar um Chromebook e começa a usar outro, basta fazer login e todos os aplicativos serão exibidos.

Para melhorar ainda mais essa experiência, faça backup dos dados do seu app na nuvem para permitir a sincronização entre dispositivos. Dessa forma, os apps não dependem de uma conexão com a Internet para operação normal. Os apps salvarão o trabalho de um usuário localmente se o dispositivo estiver off-line e o sincronizarão com a nuvem quando ele ficar on-line novamente. Por exemplo, o Documentos Google permite que os usuários editem documentos off-line e sincronizem as alterações na nuvem quando o dispositivo tiver conectividade.

Os Chromebooks também podem ser compartilhados entre um grande número de pessoas, como em escolas. Como o armazenamento local não é infinito, contas inteiras e o armazenamento delas podem ser removidos do dispositivo a qualquer momento. Em ambientes educacionais, é uma boa ideia manter esse cenário em mente.

Atualizar as bibliotecas do NDK

Se seu app usa as bibliotecas do Android NDK e tem como alvo a versão 23 ou posterior do SDK, certifique-se de que as realocações de texto sejam removidas das versões ARM e x86 das bibliotecas do NDK, porque não são compatíveis com Android 6.0 (API de nível 23) e versões posteriores. Ao deixar realocações de texto nas bibliotecas do NDK, você poderá também causar erros de incompatibilidade com Chromebooks, especialmente ao executar em um dispositivo que usa uma arquitetura x86.

Desenvolver novos casos de teste para seu app

Primeiro, verifique se as sinalizações corretas do manifesto foram especificadas. Essas sinalizações incluem a orientação desejada, sendo que a configuração unspecified para screenOrientation é a mais recomendada. Se você especificar a orientação como landscape, use sensorLandscape para que a experiência em um tablet seja ideal. Se você tiver solicitações especiais de tamanho ou orientação, adicione também as novas metatags como dicas de tamanho ou orientação, o que afeta apenas os ambientes de computadores. Caso também queira fazer essa mudança em smartphones, especifique o layout defaultHeight, defaultWidth ou minHeight.

Se você se interessa pelo processamento de dispositivo de entrada para determinadas categorias de dispositivos, especifique android.hardware.type.pc para desativar o modo de compatibilidade de entrada.

Se você estiver usando algum tipo de rede, verifique se o app pode se reconectar à rede depois que um problema de conexão é resolvido ou se o dispositivo sai do modo de espera.

O Google recomenda verificar os Casos de teste para apps Android no Chrome OS, que você pode usar em seu próprio plano de teste. Os casos de teste abrangem uma ampla variedade de cenários comuns para os quais os apps Android precisam ser preparados, caso se espere que sejam executados em dispositivos Chrome OS.

Alterações de orientação e várias janelas

O ambiente de várias janelas do Chrome OS pode tornar a persistência de estado e os problemas de recall mais óbvios. Use ViewModel para salvar e restaurar seu estado, quando apropriado.

Para testar a persistência de estado, minimize seu app por algum tempo, inicie outro processo intensivo e, em seguida, restaure o app para confirmar se ele retornará ao estado em que você o deixou.

Redimensione a janela de teste pressionando a tecla de tela cheia (F4), maximizando e restaurando. Teste o redimensionamento livre, ativando-o nas opções do desenvolvedor e verificando se o app é redimensionado sem falhas.

Se seu dispositivo Chrome OS for compatível, mude do modo laptop para o modo tablet para ver se tudo funciona conforme o esperado. Gire o dispositivo uma vez no modo tablet para testar as alterações de orientação. Volte para o modo laptop. Repita esse passo algumas vezes.

Certifique-se de que a barra superior não está corrompendo seu app ao deslocar elementos da IU ou a entrada por toque baseada na localização. Para dispositivos Chrome OS, certifique-se de que seu app não coloque informações importantes na área da barra de status.

Se você estiver usando a câmera ou outros recursos de hardware, como a caneta, verifique se eles funcionam corretamente ao realizar as mudanças na janela e no dispositivo descritas acima.