Como o Android Go pode ajudar telefones Android mais antigos a executar o Android 8.1 Oreo

Android Go é a versão simplificada do Android Oreo 8.1 do Google para dispositivos novos com pouca RAM. Acontece que isso também pode ajudar no desenvolvimento de ROM personalizada em dispositivos mais antigos.

Android Go é a versão simplificada do Android do Google baseada no Android 8.1 Oreo e tem como objetivo ser uma versão otimizada do Android para dispositivos de baixo custo com 1 GB de RAM ou menos. Foi anunciado em maio passado na conferência Google I/O Developer, e eventualmente, mais detalhes foram revelados em dezembro daquele ano. Foi dito que foi feito para a próxima geração de dispositivos básicos, para garantir que aqueles em os países em desenvolvimento ainda podem usar smartphones funcionais para acessar a Internet e usar aplicativos.

Go tem uma ampla variedade de otimizações e melhorias de desempenho, incluindo a ocupação de 50% menos espaço de armazenamento do que uma instalação média do Android Oreo. Graças ao Android Runtime (ART) e às otimizações de kernel, um dispositivo que executa o Android Go irá, em média, rodar 15% mais rápido do que uma instalação normal do Android Oreo no mesmo dispositivo. Essas otimizações são feitas por meio de uma série de configurações de compilação especializadas feitas pelo Google, que explicaremos mais tarde.

O Android Go também se beneficia de aplicativos "Go" especiais, como Arquivos vão, YouTube Go e Google Maps vai. São versões leves de aplicativos feitos pelo Google, que possuem requisitos reduzidos para funcionar com mais eficiência. Isso significa que aqueles com dispositivos Android Go podem aproveitar a maioria dos mesmos benefícios que os usuários regulares do Android Oreo também podem, tornando uso do conjunto de aplicativos do Google sem ter que gastar muito dinheiro em um carro-chefe ou até mesmo em um orçamento um pouco mais caro dispositivo.

É tudo uma questão de o Google expandir seu mercado. No entanto, levanta-se a questão de que, se o Android Go consiste principalmente em uma configuração de compilação e um conjunto de aplicativos otimizados do Google, os desenvolvedores podem fazer suas próprias versões do Android Go? Resumidamente, sim, nós podemos.

Alguns desenvolvedores do LineageOS já estão criando ROMs personalizadas otimizadas para Android Go

Já estamos vendo uma certa aceitação do Android Go por parte de alguns desenvolvedores de ROM personalizados, como o XDA Recognized Developer AdrianDC, com seu trabalho no LineageOS 15.1 com configurações de compilação do Android Go para vários telefones antigos da Sony. Os aparelhos em questão são o Sony Xperia SP, o Sony Xperia T, o Sony Xperia V e o Sony Xperia TX. Todos esses dispositivos datam dos anos de 2012 e 2013, mas receberão o LineageOS 15.1 baseado no Android 8.1 Oreo usando um Android Configuração de compilação Go, que pode permitir que os dispositivos executem aplicativos Google ‘Go’ com fluidez, caso um conjunto de Gapps Android Go eventualmente seja lançado.

Qualquer mantenedor individual do LOS deve ser capaz de introduzir uma compilação configurada do Android Go, sendo ela um conjunto de configurações de compilação e outras otimizações. O que isso significa é que aqueles que adquiriram o Sony Xperia T, por exemplo, um dispositivo com Android 4.0.4 Ice Cream Sandwich no lançamento, poderão usar um versão mais otimizada do Android 8.1 Oreo no dispositivo, fazendo uso de aplicativos como YouTube Go e Google Maps Go. Não funcionará em níveis emblemáticos de desempenho, mas deveria ser utilizável—especialmente para um dispositivo que remonta a 2012.


Como o Android Go pode ajudar telefones Android mais antigos a executar o Android Oreo

As configurações de compilação no Android são um conjunto de parâmetros que pertencem a vários aspectos do sistema Android que são aplicados ao compilar a imagem do sistema para flashear em um dispositivo. Normalmente, isso muda o comportamento do sistema, e as principais otimizações do Android Go vêm de essas configurações de compilação.

As configurações de compilação usadas para compilar o Android Go.

Falei com o desenvolvedor reconhecido pelo XDA alegre, que me ajudou muito a entender as mudanças que estavam acontecendo — o que realmente faz o Android Go funcionar. Algumas dessas configurações de compilação não podem ser alteradas sem recompilar e fazem parte do projeto da própria ROM. Estas são as bandeiras totalmente capitalizadas.

Todos esses sinalizadores, no entanto, referem-se a muitos aspectos diferentes do Android relacionados ao armazenamento e ao uso de memória. Esses incluem gerenciamento automático de armazenamento, o assassino de pouca memória do Android, o dex (dAlvik exarquivos executáveis) otimizador e limites de RAM para execução de aplicativos. Os arquivos APK consistem nesses arquivos DEX, portanto, de certa forma, é possível pensar em um arquivo APK simplesmente como um Arquivo ZIP contendo muitos arquivos .dex, que na verdade é o que o Android executa quando executa um aplicativo. O gerenciamento automático de armazenamento será controlado pelo aplicativo Files Go, não pelo sistema Android.

Android Go Utilities Modo de pouca RAM do Android

No Android 4.4 KitKat, o Google introduziu um novo sinalizador chamado "carneiro baixo", que visava suportar dispositivos com 512 MB de RAM. Ele faz uma série de otimizações no sistema. Essas mudanças são extremamente benéficas para dispositivos com menor RAM.

Gerenciamento de memória aprimorado

  • Configurações de kernel validadas para economia de memória: Troque para ZRAM.
  • Elimine processos em cache se estiverem prestes a ser removidos do cache e forem muito grandes.
  • Não permita que grandes serviços voltem aos Serviços A (para que não possam causar a morte do inicializador).
  • Elimine processos (mesmo aqueles que normalmente não podem ser eliminados, como o IME atual) que ficam muito grandes em manutenção ociosa.
  • Serialize o lançamento de serviços em segundo plano.
  • Uso de memória ajustado em dispositivos com pouca RAM: níveis de ajuste de falta de memória (OOM) mais rígidos, caches gráficos menores, etc.

Essas alterações acima basicamente garantem que o sistema use RAM compactada sempre que possível, por meio do uso de ZRAM. ZRAM é basicamente um RAMdisk (um meio de armazenamento que usa RAM, muito mais rápido do que o armazenamento normal no dispositivo) como um arquivo de troca. Um arquivo de troca é usado quando o uso de RAM é alto e os aplicativos ainda exigem memória. Isso é muito, muito mais lento que a RAM e deve ser evitado sempre que possível. Em essência, simplesmente comprime o conteúdo da memória.

Memória do sistema reduzida

  • Processos system_server e SystemUI reduzidos (economizaram vários MBs).
  • Pré-carregue caches dex em Dalvik (economizou vários MBs).
  • Opção JIT-off validada (economiza até 1,5 MB por processo).
  • Redução da sobrecarga do cache de fontes por processo.
  • Introduzido ArrayMap/ArraySet e usado extensivamente no framework como um substituto mais leve para HashMap/HashSet.

O que mais acontece aqui é apenas a redução do consumo de memória de vários processos em execução no dispositivo, para ser o mais conservador possível. Os serviços essenciais do sistema foram eliminados para usar o mínimo de memória possível em segundo plano, já que cada megabyte de RAM é importante.

Android Go usa um assassino de pouca memória modificado e otimizações dex

Dado que o Android Go é principalmente para dispositivos com 1 GB de RAM ou menos, será necessário um gerenciamento de memória mais agressivo. O Android Go modifica o Low Memory Killer (LMK) de algumas maneiras diferentes. Primeiro, quando uma grande quantidade de RAM é usada, o eliminador de pouca memória vai para um "pressão crítica" estado. Isso ocorre porque quando o uso de memória é alto, o sistema fica lento devido à tentativa constante de acessar um arquivo de troca no armazenamento do dispositivo. Manter a RAM limpa evitará que o sistema precise usar esse arquivo de troca e evitará sobrecarga de memória. O esgotamento da memória ocorre quando a memória do dispositivo está cheia e precisa paginar constantemente o arquivo de troca no armazenamento do dispositivo, degradando fortemente o desempenho.

Serviços e serviços WiFi estão definidos como "perfil de velocidade", o que significa que os métodos selecionados nesses serviços são compilados Ahead-of-Time (AOT). (Um método refere-se a um conjunto de códigos que pode ser chamado a qualquer momento pelo nome.) Isso reduz o uso de RAM e armazenamento, já que o sistema Android não precisará recompilar continuamente serviços essenciais executados no dispositivo. Enquanto isso, os APKs compartilhados são configurados para “acelerar”, projetado para proporcionar vida útil extra à bateria e ciclos extras de CPU, otimizando as instruções dex para obter melhor desempenho.

Em termos de otimizações dex, o Android Go faz bastante. Para começar, depois de 10 dias, fazer downgrade de um aplicativo se não for usado para economizar espaço. O downgrade aqui não se refere à diminuição do número real da versão do aplicativo, mas significa que o dalvik_cache do aplicativo será apagado. O cache Dalvik é usado para que o dispositivo não precise recompilar aplicativos; em vez disso, ele compila apenas as partes mais necessárias e armazena em cache. O restante é compilado usando o compilador Just in Time (JIT) quando o aplicativo é executado. Contudo, se a aplicação não for utilizada durante 10 dias, as partes essenciais da aplicação que estão pré-compiladas também serão removidas. Isso é feito para liberar o máximo de espaço possível. Outra mudança simples é não permitir que o uso de RAM de um aplicativo exceda 256 MB, para que um aplicativo não possa usar toda a RAM do dispositivo.


O Android é o futuro do desenvolvimento de ROM personalizada em dispositivos de baixo custo?

Atualmente, não sabemos a resposta para isso, mas o futuro parece brilhante para o desenvolvimento de ROMs personalizadas em dispositivos mais antigos. Pode haver outros problemas na execução de uma versão mais recente do Android em um dispositivo, mas, em teoria, uma atualização para um Android Go mais otimizado baseado no Android Oreo deve fazer com que um dispositivo mais antigo e de baixo custo funcione melhor.