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

O Android Go é a versão simplificada do Google, baseada no Android 8.1 Oreo, e pretende ser uma versão otimizada do Android para dispositivos low-end com 1 GB de RAM ou menos. Foi anunciado em maio passado na conferência do Google I / O Developer e, eventualmente, mais detalhes foram revelados em dezembro, no final daquele ano. Dizia-se que era feito para a próxima geração de dispositivos de entrada, para garantir que aqueles nos países em desenvolvimento ainda possam usar smartphones funcionais para acessar a Internet e usar aplicativos.

O Go possui uma ampla variedade de otimizações e melhorias de desempenho, incluindo ocupar 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 do kernel, um dispositivo executando o Android Go irá, em média, executar 15% mais rápido do que em uma instalação normal do Android Oreo no mesmo dispositivo. Essas otimizações são feitas por meio de várias configurações de compilação especializadas feitas pelo Google, que explicaremos mais adiante.

O Android Go também se beneficia de aplicativos especiais "Go", como Files Go, YouTube Go e Google Maps Go. Estas são versões leves de aplicativos criados pelo Google, que reduziram os requisitos para executar com mais eficiência. Isso significa que aqueles com dispositivos Android Go também podem usufruir dos mesmos benefícios que os usuários comuns do Android Oreo, aproveitando o conjunto de aplicativos do Google sem gastar muito dinheiro em um carro-chefe ou mesmo em um dispositivo de orçamento levemente mais caro.

É tudo sobre o Google expandindo seu mercado. No entanto, ele sugere que, se o Android Go consistir principalmente em uma configuração de compilação e um conjunto de aplicativos otimizados do Google, os desenvolvedores poderão criar suas próprias compilações do Android Go? Em suma, sim, podemos .

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

Já estamos vendo uma aceitação do Android Go por parte de alguns desenvolvedores de ROM personalizados, como o desenvolvedor reconhecido 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 dispositivos 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 com base no Android 8.1 Oreo usando uma configuração de compilação Android Go, que pode permitir que os dispositivos executem aplicativos do Google 'Go' com fluidez, caso um Android Go defina de Gapps eventualmente será lançado.

Qualquer mantenedor de LOS individual deve poder introduzir uma compilação configurada do Android Go, com um conjunto de configurações de compilação e outras otimizações. O que isto significa é que aqueles que podem ter comprado o Sony Xperia T, por exemplo, um dispositivo executando o Android 4.0.4 Ice Cream Sandwich no lançamento, poderão usar uma versão melhor otimizada do Android 8.1 Oreo no dispositivo, fazendo uso de aplicativos como o YouTube Go e o Google Maps Go. Ele não será executado nos níveis mais importantes de desempenho, mas deve 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 piscar em um dispositivo. Normalmente, isso muda a forma como o sistema se comporta, e as principais otimizações do Android Go vêm dessas configurações de compilação.

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

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

No entanto, todos esses sinalizadores pertencem a muitos aspectos diferentes do Android relacionados ao armazenamento e uso de memória. Isso inclui gerenciamento automático de armazenamento, killer com pouca memória do Android, otimizador dex (limites de arquivos excluídos) e limites de RAM para aplicativos em execução. Os arquivos APK consistem nesses arquivos DEX; portanto, é possível pensar em um arquivo APK como simplesmente um arquivo ZIP contendo muitos arquivos .dex, que é 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.

Utilitários Android Go Modo de baixa RAM do Android

No Android 4.4 KitKat, o Google introduziu um novo sinalizador chamado "low-ram", destinado a suportar dispositivos com 512 MB de RAM. Faz várias otimizações para o sistema. Essas mudanças são extremamente benéficas para dispositivos com menos RAM.

Gerenciamento de memória aprimorado

  • Configurações validadas do kernel para economia de memória: Troque para o ZRAM.
  • Mate os processos armazenados em cache, se estiverem prestes a ser armazenados em cache e forem muito grandes.
  • Não permita que serviços grandes retornem aos Serviços A (para que não possam causar a morte do iniciador).
  • Processos de interrupção (mesmo os ordinariamente inábeis, como o IME atual) que ficam muito grandes na manutenção ociosa.
  • Serialize o lançamento de serviços em segundo plano.
  • Uso de memória ajustada de 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 garantem basicamente que o sistema use RAM compactada sempre que possível, através do uso da ZRAM. O ZRAM é basicamente um disco RAM (um meio de armazenamento que usa RAM, muito mais rápido do que o armazenamento regular no dispositivo) como um arquivo de troca. Um arquivo de troca é usado quando o uso da 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, ele simplesmente comprime o conteúdo da memória.

Memória do sistema reduzida

  • Processos system_server e SystemUI aparados (salvos vários MBs).
  • Pré-carregue dex caches no Dalvik (salvou vários MBs).
  • Opção validada por JIT-off (economiza até 1, 5 MB por processo).
  • Sobrecarga de cache de fonte por processo reduzida.
  • Introduziu o ArrayMap / ArraySet e foi amplamente utilizado na estrutura como uma substituição mais leve para o HashMap / HashSet.

O que está acontecendo principalmente aqui é apenas o consumo reduzido 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 retirados para usar o mínimo de memória possível em segundo plano, pois cada megabyte de RAM é importante.

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

Como 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 LMK (Low Memory Killer) de várias maneiras diferentes. Primeiro, quando uma grande quantidade de RAM é usada, o assassino com pouca memória entra em um estado de "pressão crítica". Isso ocorre porque, quando o uso da memória é alto, o sistema fica lento devido à constante tentativa de acessar um arquivo de troca no armazenamento do dispositivo. Manter a RAM limpa evita que o sistema precise usar esse arquivo de troca e evita que a memória seja debitada. A troca de memória ocorre quando a memória do dispositivo está cheia e constantemente é necessário paginar o arquivo de troca no armazenamento do dispositivo, prejudicando bastante o desempenho.

Os serviços e serviços Wi-Fi são definidos como "perfil de velocidade", o que significa que os métodos selecionados nesses serviços são compilados com antecedência (AOT). (Um método se refere a um conjunto de códigos que podem ser chamados a qualquer momento pelo nome.) Isso reduz o uso e o armazenamento de RAM, pois o sistema Android não precisará recompilar continuamente os serviços essenciais executados no dispositivo. Enquanto isso, os APKs compartilhados são configurados para "acelerar", que é projetado para fornecer vida útil da bateria e ciclos extras da CPU, otimizando as instruções dex para obter melhor desempenho.

Em termos de otimizações de dex, o Android Go faz bastante. Para iniciantes, após 10 dias, o aplicativo será rebaixado se não for usado para economizar espaço. O downgrade aqui não se refere ao número real da versão do aplicativo diminuindo, 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 está compilando apenas as partes mais necessárias e armazenando em cache. O restante é compilado usando o compilador Just in Time (JIT) quando o aplicativo é executado. Se o aplicativo não for usado por 10 dias, no entanto, as partes essenciais do aplicativo que sã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, de modo que um aplicativo não possa usar toda a RAM do dispositivo.


O Android é o futuro do desenvolvimento de ROM personalizada em dispositivos low-end?

Atualmente, não sabemos a resposta para isso, mas o futuro parece brilhante para o desenvolvimento de ROM personalizado em dispositivos mais antigos. Pode haver outros problemas para que uma versão mais recente do Android seja executada em um dispositivo, mas em teoria, uma atualização para um Android Go mais otimizado, com base no Android Oreo, deve fazer com que um dispositivo mais antigo e barato funcione melhor.