Criar para o ChromeOS

Os dispositivos ChromeOS, como os Chromebooks, são compatíveis com a Google Play Store e apps Android. Este documento 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 app Android.

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.

Desde a versão M53 do ChromeOS, todos os apps para Android que não exigem explicitamente o recurso android.hardware.touchscreen também funcionam em dispositivos ChromeOS que são compatíveis com o recurso android.hardware.faketouch. No entanto, para ajudar seu app a funcionar em todos os Chromebooks, atualize o arquivo de manifesto para que o recurso android.hardware.touchscreen não seja necessário, conforme mostrado no exemplo a seguir.

<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, e os Chromebooks podem não ter todos os sensores encontrados em dispositivos portáteis Android, como GPS e acelerômetros. No entanto, em alguns casos, a funcionalidade de um sensor é fornecida de outra forma. Por exemplo, apesar de os Chromebooks não terem sensores de GPS, eles fornecem dados de localização com base em conexões Wi-Fi. Consulte a visão geral dos sensores para saber mais sobre os sensores compatíveis com a plataforma Android.

Se você quiser que o app seja executado em Chromebooks, independentemente da compatibilidade com o sensor, atualize o arquivo de manifesto para que nenhum sensor 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 podem ser instalados em Chromebooks. Para ver uma lista completa de recursos de software que não são compatíveis com os Chromebooks, consulte recursos de software incompatíveis.

Atualizar seu SDK de destino

Atualize o atributo targetSdkVersion do app para o nível de API mais recente disponível e aproveite todas as melhorias da plataforma Android. Confira as melhorias na plataforma Android em diferentes versões.

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 tem acesso direto à interface da LAN do sistema. Em vez disso, o tráfego IPv4 passa por uma camada interna de conversão de endereços de rede (NAT), e o tráfego unicast IPv6 é roteado por um salto extra.

Conexões unicast de saída de um app Android para a Internet geralmente funcionam do modo em que se encontram. Em geral, as conexões de entrada são bloqueadas. Pacotes multicast ou broadcast do Android não são encaminhados para a LAN pelo firewall.

Como uma exceção à restrição de multicast, o ChromeOS 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 usam o endereço IPv4 do host do ChromeOS. Internamente, o app Android vê um endereço IPv4 privado atribuído à interface de rede. As conexões IPv6 originárias do Android usam um endereço diferente do host do ChromeOS, porque o contêiner do Android tem um endereço IPv6 público dedicado.

Usar nuvem e armazenamento local de forma eficaz

Os Chromebooks permitem que os usuários migrem facilmente de um dispositivo para outro. Se um usuário parar de usar um Chromebook e começar a usar outro, basta fazer login para que todos os apps dele apareçam.

Por causa desse recurso, faça backup dos dados do seu app na nuvem para permitir a sincronização entre dispositivos. No entanto, não dependa de uma conexão com a Internet para que seu app funcione normalmente. Em vez disso, salve o trabalho do usuário localmente quando o dispositivo estiver off-line e sincronize com a nuvem quando ele ficar on-line novamente.

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.

Desenvolver novos casos de teste para seu app

Para desenvolver casos de teste para seu app, primeiro especifique as flags de manifesto adequadas. Em particular, defina screenOrientation como unspecified. Se você quiser especificar uma orientação paisagem, use sensorLandscape para que a experiência em um tablet seja ideal.

Se você tiver necessidades especiais de tamanho ou orientação para ambientes de computadores, adicione metatags como dicas de tamanho ou orientação. Para incluir tamanho e orientação em smartphones, especifique os atributos de 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 a ela depois que um problema de conexão é resolvido ou se o dispositivo sai do modo de espera.

Recomendamos verificar a lista de casos de teste para apps Android no Chrome OS, que você pode usar no seu plano de teste. Os casos de teste abrangem cenários comuns para os quais os apps Android precisam estar preparados, caso se espere que sejam executados em dispositivos ChromeOS.

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

O ambiente de várias janelas do ChromeOS 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 restaure o app para confirmar se ele retorna ao estado em que você o deixou.

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

Se o dispositivo ChromeOS for compatível, mude do modo laptop para o modo tablet para verificar se tudo funciona conforme o esperado. Gire o dispositivo uma vez no modo tablet para testar as mudanças de orientação e volte para o modo laptop. Repita essa etapa algumas vezes.

Certifique-se de que a barra superior não está corrompendo seu app ao deslocar elementos da interface ou a entrada por toque baseada na localização. Para dispositivos ChromeOS, 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 outro recurso de hardware, como a caneta, verifique se eles funcionam corretamente ao realizar as mudanças na janela e no dispositivo descritas anteriormente.