Pplware

Como compilar uma ROM com o source CyanogenMod 10.1

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:

repo sync

É 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.”

Exit mobile version