Entendendo a customização do Android a fundo

Não é de hoje que o Android é uma das plataformas mobile mais abertas a modificações e customizações “à moda da casa”. Um bom exemplo são as variadas interfaces do utilizador (GUI) que as fabricantes como Samsung e Xiaomi entregam. É muito raro ver dois aparelhos Android de marcas diferentes com a mesma interface – ou até mesmo versão do robozinho verde. Cada fabricante insere seus elementos de design, aplicativos e recursos próprios, criando uma experiência única.

Mas o que muitos não sabem (ou sabem, mas não se atentam) é que esta liberdade da plataforma não se resume às fabricantes – qualquer um pode “dissecar” o software de seu dispositivo, em alguns casos até mesmo com ferramentas oferecidas oficialmente pela fabricante, e modificá-lo como bem entender. Afinal, o Android é um software de código aberto, então assim como as nossas amadas distribuições, pode-se modificar o que quiser.

O Android, tal qual Ubuntu, Fedora, Arch e etc, usa o kernel Linux. Não é exatamente igual ao kernel que usas em teu desktop, afinal, os drivers para dispositivos móveis são injetados no kernel manualmente. Ou seja, nada de baixar uma release do kernel.org e tentar aplicar no seu telefone! Entretanto, muitas áreas do sistema operacional (e até fora dele) em dispositivos Android são modificáveis. Isto inclui, mas não se limita a kernel, sistema operacional, bootloader, recovery, entre outros. Estes termos podem assustar um pouco – eu me senti como no primeiro contato com Linux ao observar isto. Então, escrevi este artigo para lhes ajudar a compreender este fascinante mundo.

Vamos começar do começo.

Conceitos básicos

Primeiramente, entenda: cada modelo diferente de telefone possui drivers e modos de funcionamento específicos. Em suma, você não pode usar um recovery ou ROM que não foi designada especificamente para seu aparelho. Você até pode, mas não funciona direito.

Geralmente, cada aparelho possui uma página no fórum XDA Developers, que serve como repositório para recoveries e ROMs feitas para ele. Cada dispositivo costuma ter uma comunidade de desenvolvedores que fabricam recoveries, ROMs e outros softwares para um aparelho.

Bootloader

O bootloader – carregador de inicialização, em tradução livre – é a “raiz” de todo o seu telefone Android. Ele gerencia o que vai iniciar – similar à BIOS do desktop – mas diferentemente dela, ele também gerencia as partições do seu dispositivo (falaremos delas depois), e pode ser usado para substituir o conteúdo delas. Em suma, é ela que usarias para aplicar um recovery customizado, e em alguns casos, até mesmo atualizações, ROMs e GSIs.

Os dois bootloaders mais usados são o Google Fastboot – usado pela esmagadora maioria das fabricantes, tais quais, mas não limitado a, Motorola, Google, Lenovo, Xiaomi, Huawei, LG, Sony, e muitas outras – e o Samsung Odin, usado, obviamente, pela Samsung. Ambos servem praticamente para a mesma coisa, mas o uso dos mesmos difere bastante entre si.

image
Google Fastboot


Samsung Odin

Recovery

O recovery – recuperação, em tradução livre – é um pequeno software que auxilia na manutenção, recuperação (daí o nome) e customização de seu aparelho. Ele tem uma partição específica para si – o /recovery (invisível mesmo com acesso superior). O recovery padrão dos dispositivos, na maioria das vezes o mesmo oferecido pelo Google, serve apenas para limpar o dispositivo e corrigir erros de inicialização, sem intervenção do usuário. Daí surge o termo “custom recovery”, pois as pessoas que querem customizar seus aparelhos acabaram desenvolvendo variações do recovery padrão, que permitem mais coisas, acesso a partições, ADB Sideload facilmente, e, principalmente, criar backups e restaurá-los manualmente, além de poder substituir o sistema operacional contido na partição /system e os dados contidos na /data.

Existem vários (vários mesmo) tipos de recovery, customizados ou não. Os mais conhecidos são o ClockWork Mod (CWM) – que já não é mais mantido e apenas é usado por telefones mais antigos, fabricados antes de 2016, o TeamWin Recovery Project (TWRP) – que ainda é mantido firme e forte e rem recursos imbatíveis – além de variações do TWRP, como o Orange Fox e o SkyHawk.

image
TWRP em funcionamento

ROM

“ROM” é constantemente usado no mundo Android para se referir a versões diferentes do robozinho. É uma definição errônea, já que “ROM” significa Read Only Memory (memória somente leitura), e o tipo de memória usado em telefones celulares é flash memory.

De qualquer forma, estarei explicando os termos relacionados a isto.

  • Stock ROM é como são chamadas as versões do Android oficiais de cada aparelho, ou seja, aplicar uma Stock ROM basicamente significa restaurar o software original do aparelho.

  • Custom ROM é como são chamadas as versões customizadas do Android. Estas têm versões específicas para cada aparelho, assim como as Stock ROMs. Geralmente empregam mudanças no GUI do Android, inserindo opções de customização que não estão disponíveis na versão oficial. Há várias versões conhecidas, como a Cyanogenmod (que foi descontinuada há alguns anos, e continua em vigor com outro nome, Lineage), a AOSPA (Paranoid), AOSP (Android mais puro possível), entre outros.

Partições

A estrutura de diretórios do Android funciona assim:

Assim como no Unix, a raiz do sistema é o /;

O sistema operacional está contido na partção System, montada em /system;

Os dados como aplicativos instalados estão contidos na partição Data, montada em /data;

Os dados do usuário (os que você consegue acessar normalmente pelo gerenciador de arquivos do telefone) estão contidos na partição Storage, montada em /data/media, com um link simbólico para /storage;

Para dispositivos mais recentes, há uma partição chamada Vendor, montada em /vendor, onde os fabricantes inserem dados básicos do dispositivo, como drivers, para o compatibilizar com o Project Treble (facilitar atualizações).

Project Treble e as GSIs

O Project Treble foi introduzido pelo Google no Android Oreo em 2017, para diminuir a fragmentação do Android, facilitar atualizações do mesmo e etc. Para os desenvolvedores de customizações, isso significa que as ROMs não precisam ser compiladas especificamente para cada dispositivo. Pode ser criada uma GSI (Generic System Image), que será compatível com todos os dispositivos de mesma arquitetura. Existem várias arquiteturas. Listarei-as aqui.

ARM – a versão de 32 bits da arquitetura mobile
ARM64 – a versão de 64 bits da arquitetura mobile
ARM32_Binder64 – um chipset de 64 bits que aceita apenas software de 32 bits

Além disto, existem dois tipos de particionamento, A-only e A/B. Isso significa que, ao baixar uma GSI, deves se atentar à arquitetura e ao particionamento. Por exemplo, baixar a versão arm64_ab para um dispositivo de 64 bits que usa A/B.

Root

Ao contrário da lenda popular, root não está ligado com custom ROMs ou algo do tipo. Fazer root é basicamente desbloquear o acesso à raiz do sistema, permitindo também que aplicativos a acessem. Isto permite que, por exemplo, aplicativos modifiquem arquivos do sistema, sua aparência e funcionamento sem precisar trocar o sistema operacional. Os binários mais conhecidos são o SuperSU (descontinuado) e o Magisk, que conta com funções como extensões que funcionam por baixo do capô do sistema e o Hide, que esconde os binários do Magisk de aplicativos que não gostam muito de dispositivos desbloqueados (como bancos, por exemplo).


Mas enfim, espero ter conseguido ajudar vocês. Tem alguma dica ou complemento ao artigo? Deixe aí embaixo! :slight_smile:

20 Curtidas

DICA → Poderia falar sobre o Bootloader em android e seus estados (Orange State, Red State, Yellow State, …)

No mais, ficou muito bom :wink:

1 Curtida

Estes casos acontecem apenas caso o desbloqueio do bootloader é feito com a key errada, ou mesmo quando a partição /boot está corrompida. Só acontece em dispositivos com o bootloader “as-from-stock” do Google.

3 Curtidas