Por Miguel Almeida para o Pplware
Provavelmente todos vocês já viram a quantidade de ROMs que existem para os mais variados equipamentos, mas faz alguma ideia de como estas são criadas? Isto inclui muitos equipamentos e múltiplos projetos, como são o caso da comunidade CyanogenMod, AOKP (Android Open Kang Project), Code Aurora, entre outras…
Este artigo tem como objetivo explicar e ensinar as noções básicas de como configurar um sistema para começar a construir ROMs para Android a partir do código fonte. Para isso é necessário ter uma instalação de raiz ou numa máquina virtual de um sistema operativo baseado em Linux (Debian, pode ser outra versão) 32 ou 64bits.
Neste caso específico usei o Ubuntu 12.10 Quantal Quetzal de 64bits, se por acaso usarem o Fedora os comandos utilizados vão ser ligeiramente diferentes. Para a instalação deste sistema operativo podem seguir este guia.
Antes de começarmos as configurações devemos ter em atenção o espaço existente no disco rígido, o código fonte do Android ocupa cerca de 8/9 GB e com a compilação para um dispositivo cerca de 25 a 30 GB.
O desenvolvimento Android tem alguns requisitos, chamados de dependências no Linux, alguns deles o Oracle (Sun) Java Development Kit version 6, Python, Git, GNU Make, entre outros…
Configurações:
CyanogenMod 10.1 – Jellybean
1º Passo: Ter o sistema atualizado, para isso executar na consola (CTRL + ALT + T):
sudo apt-get update
2º Passo: Instalar as dependências
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool libxml2-utils
2.1: Só instalar para 64 bits:
sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib
Se precisarem de ver mais alguma dependência podem consultar o site oficial do Android aqui
3º Passo: Preparar Repo
Esta é uma ferramenta que permite fazer o download do código fonte do Android, automaticamente a partir de centenas de repositórios individuais.
Criar os diretórios/pastas e instalar repo:
mkdir -p ~/bin
mkdir -p ~/cm10.1
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
Colocar a pasta ~/bin como caminho executável, para permitir a execução do comando repo seja usado fora dessa mesma pasta.
export PATH=${PATH}:~/bin
4º Passo: Iniciar a sincronização com o código fonte da CyanogenMod 10.1
cd ~/cm10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
5º Passo: Download do código fonte. Poderá demorar cerca de 2/3h dependendo a velocidade da Internet.
repo sync
Nota: Até este ponto é genérico para todos os equipamentos, mas o próximo passo já é específico para um equipamento.
6º Passo: Neste passo vamos preparar o código específico para um equipamento, Google/LG Nexus 4 que tem a “alcunha” de mako nos repositórios CyanogenMod.
. build/envsetup.sh && breakfast mako
7º Passo: Download ou extração dos Proprietary Files, também chamados de blobs
cd ..
mkdir -p ~/cm10.1/vendor/lge/mako
git clone git://github.com/asm19/vendor_lge_mako.git
rsync -av --delete ~/vendor_lge_mako/ ~/cm10.1/vendor/lge/mako/ --exclude='.git*'
As instruções acima são para o download dos ficheiros que se encontra no meu github, mas como disse estes podem ser extraídos diretamente do equipamento. Para os extraírem terão que ter o adb (Ver onde diz: Configuring USB Access) a funcionar no Ubuntu e depois ir à pasta onde se encontra os ficheiros do Nexus 4, se seguiram os passos acima estes deverão estar em:
cd ~/cm10.1/device/lge/mako
E executar:
./extract-files.sh
Nota: É importante que estes ficheiros sejam devidamente extraídos, pois sem eles vão ter erros na compilação e ter algumas funcionalidades desativadas, como touch, camara, entre outras…
8º Passo: Download das aplicações prebuilt (pré-construídas) necessárias para a compilação, Terminal Emulator:
cd ~/cm10.1/vendor/cm
./get-prebuilts
9º Passo: Ativar cache (para a compilação ser mais rápida) e iniciar a compilação.
cd ~/cm10.1/
export USE_CCACHE=1
. build/envsetup.sh && croot && brunch mako
Se tiver feito todos os passos sem erros, a ROM vai começar a ser compilada. O tempo de compilação varia de computador para computador, no meu com um i7 3610QM de 2.3 – 3.3Ghz, 12GB de RAM demora cerca de 1h.
10º Passo: Após a compilação terminar vão ter a vossa ROM compilada num .zip e este é apresentado com o md5 correspondente, que se encontra em:
~/cm10.1/out/target/product/mako
Está assim finalizado o processo de compilação e já têm a vossa ROM criada, podem flashar o vosso equipamento através do ClockworkMod.
Considerações finais:
- Sempre que quiserem compilar basta repetir o 9º Passo;
- Neste caso específico o kernel é compilado no decorrer da compilação da ROM, o mesmo não precisa de ser compilado à parte;
- Sempre que quiserem ver se há novas alterações ao código fonte que é desenvolvido pela comunidade CyanogenMod basta consultarem o Code Review da CyangonMod.
- Se pretenderem atualizar os ficheiros do código fonte já existentes no vosso computador, de modo a obter estas atualizações, é só irem ao vosso diretório através da consola e voltar atualizar a repo com o comando:
repo sync
- Se o vosso dispositivo não for oficialmente suportado pela comunidade têm que ter as configurações básicas do mesmo, bem como os Proprietary Files, sendo necessário alguns ajustes. Esta fase já requer alguns conhecimentos sobre o código fonte do Android.
É desta que se vai aventurar no desenvolvimento de ROMs Android?
“O Pplware e o autor deste artigo, Miguel Almeida, não se responsabilizam por quaisquer danos causados por instruções, inerentes ao artigo ou aos comentários, que possam resultar na perda da garantia do equipamento.”