Compilando o CyanogenMod para o Nexus 5
- por Sergio Prado
O CyanogenMod é um sistema operacional alternativo e de código-aberto baseado no Android para smartphones e tablets, possuindo funcionalidades que não existem na versão padrão do Android (AOSP), como suporte nativo à temas, overclock de CPU e cliente de VPN.
Na página de downloads do projeto é possível baixar a última versão do firmware do CyanogenMod para diversos dispositivos móveis e tablets de mercado.
Se uma imagem compilada já é fornecida pelo projeto, por que então você precisaria compilar o CyanogenMod? Por vários motivos, dentre eles:
- Adicionar uma funcionalidade;
- Personalizar ou customizar;
- Corrigir problemas;
- Portar para outro dispositivo de hardware;
- Aprender!
E é claro que o último motivo acima já é suficiente para colocarmos a mão na massa!
PRÉ-REQUISITOS
O primeiro passo é preparar a sua máquina para compilar o Android. Para isso, você pode seguir os procedimentos oficiais do Google.
BAIXANDO O CÓDIGO-FONTE
Crie um diretório na sua máquina de desenvolvimento para armazenar o código-fonte do CyanogenMod e entre nele:
$ mkdir ~/cm && cd ~/cm |
Para os testes, utilizaremos a versão 11.0 do CyanogenMod. Use o repo para baixar o código-fonte, conforme abaixo:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0 $ repo sync |
Prepare-se, pois o processo de download do código-fonte pode levar de 30 minutos a algumas horas, dependendo da velocidade da sua conexão com a Internet. Ao final, você terá disponível o código-fonte conforme abaixo:
$ ls abi bootable developers external libnativehelper pdk system android build development frameworks Makefile prebuilt tools art cts device hardware ndk prebuilts vendor bionic dalvik docs libcore packages sdk |
Uma descrição dos principais diretórios do código-fonte está disponível na documentação do CyanogenMod.
CONFIGURANDO
O primeiro passo é inicializar o ambiente de compilação carregando o script abaixo:
$ source build/envsetup.sh |
Este script irá configurar o terminal com diversos comandos que podem ser usados para gerenciar o código-fonte. Consulte a documentação do CyanogenMod para uma descrição dos principais comandos.
Depois de inicializar o ambiente, alguns binários utilizados pelo sistema de compilação do CyanogenMod precisam ser baixados da Internet:
$ cd vendor/cm $ ./get-prebuilts $ croot |
O próximo passo é configurar para qual dispositivo pretendemos compilar o CyanogenMod. Isso pode ser feito com o comando breakfast. Para os testes, compilaremos uma versão do CyanogenMod para o Nexus 5, cujo codinome é hammerhead.
$ breakfast hammerhead |
O comando acima irá baixar as configurações do dispositivo, o código-fonte do kernel e selecionar o dispositivo para compilação.
Por último, é necessário extrair do dispositivo alguns binários que serão usados na imagem. Estes binários (blobs) são normalmente compostos por módulos de kernel, bibliotecas e aplicações proprietárias do fabricante do hardware, que são essenciais para o funcionamento do dispositivo. Para isso, é necessário conectar o dispositivo via ADB com sua máquina e executar os comandos abaixo:
$ cd device/lge/hammerhead/ $ ./extract-files.sh $ croot |
COMPILANDO
Agora é só compilar:
$ mka bacon |
O processo de compilação pode levar algumas horas, dependendo da sua máquina.
No final da compilação, as imagens geradas estarão no diretório apontado pela variável de ambiente $OUT:
$ ls $OUT android-info.txt obj boot.img previous_build_config.mk cache ramdisk.img cache.img ramdisk-recovery.cpio clean_steps.mk ramdisk-recovery.img cm-11-20141002-UNOFFICIAL-hammerhead.zip recovery cm-11-20141002-UNOFFICIAL-hammerhead.zip.md5sum recovery.img cm_hammerhead-ota-8895f15ab2.zip root data symbols external system fake_packages system.img installed-files.txt userdata.img kernel |
Opcionalmente, você pode configurar (breakfast hammerhead) e compilar (mka bacon) de uma vez só com o comando abaixo:
$ brunch hammerhead |
O último passo é instalar a imagem gerada (cm-11-20141006-UNOFFICIAL-hammerhead.zip) usando uma imagem de recovery customizada.
Para os mais aventureiros, alguns guias de desenvolvimento estão disponíveis no site do projeto, assim como um tutorial para portar o CyanogenMod para um dispositivo de hardware.
Divirta-se!
Sergio Prado
Sem Comentários
Nenhum comentário até agora... é a sua chance de ser o primeiro a comentar!