Compilando o CyanogenMod para o Nexus 5

- por Sergio Prado

Categorias: Android Tags: ,

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.

CyanogenMod-logo2

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!

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.