Comece a criar apps para o ChromeOS

Os dispositivos ChromeOS, como os Chromebooks, 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 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.

A partir da versão M53 do ChromeOS, todos os apps Android que não exigem explicitamente o recurso android.hardware.touchscreen também funcionam em dispositivos ChromeOS compatíveis com o recurso android.hardware.faketouch. No entanto, para garantir que seu app funcione 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 abaixo.

<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, os Chromebooks podem não ter sensores de GPS, mas 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 compatíveis com Chromebooks. Por exemplo, apps que oferecem 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 conferir uma lista completa de recursos de software sem suporte para 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. Analise 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 meio de um salto extra.

As conexões unicast de saída de um app Android para a Internet geralmente funcionam como estão. Em geral, as conexões de entrada são bloqueadas. Os 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 vai encontrar um endereço IPv4 particular 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, ele só vai precisar fazer login e todos os apps vão aparecer.

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 de Internet para que o 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 voltar a ficar on-line.

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 do manifesto adequadas. Especifique 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 computador, considere adicionar metatags como dicas de tamanho ou orientação. Para incluir tamanho e orientação em smartphones, especifique os atributos defaultHeight, defaultWidth ou minHeight do layout.

Se você se interessa pelo processamento de dispositivo de entrada para determinadas categorias de dispositivo, 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.

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 recuperação 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 de recursos 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 essa opçã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 conferir 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.

Verifique se 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 ChromeOS, verifique se o app não coloca 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 ele funciona corretamente ao realizar as mudanças na janela e no dispositivo descritos anteriormente.