domingo, 28 de abril de 2013

Samsung Galaxy Ace: compilar CyanogenMod 7

OS: Ubuntu Linux 12.04

Requisitos:

1) Para os sistemas de 32 e 64 bits:
~$ 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 libxml2-utils xsltproc

Para os sistemas de 64bits:
~$ sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib

2) Sacar o Android SDK em http://developer.android.com/sdk/index.html

3) Acrescentar a respectiva directoria na PATH:
~$ export PATH=${PATH}:~/adt-bundle-linux-x86/sdk/platform-tools

Instruções:

1) Criar as seguintes directorias:
~$ mkdir -p ~/bin
~$ mkdir -p ~/android/cyanogenmod7


2) Sacar o "repo" e torná-lo executável:
~$ cd bin
~$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
~$ chmod a+x ~/bin/repo
~$ export PATH=${PATH}:~/bin


3) Sincronizar código fonte do CM7:
~$ cd android/cyanogenmod7
~$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
~$ repo sync -j4


4) Definir CM7 para o SGA:
~$ cd android/cyanogenmod7
~$ source build/envsetup.sh
~$ lunch

- Seleccionar "cm_cooper-userdebug". Se por algum motivo não aparecer na lista, experimentar:
~$ lunch cm_cooper-userdebug (ou "lunch full_cooper-userdebug")

Alternativa:
~$ cd android/cyanogenmod7
~$ cd device/samsung
~$ git clone https://github.com/vo-1/android_device_samsung_cooper cooper


5) Extrair códigos proprietários:
- Conectar o SGA ao computador via USB (activar "Depuração USB").
~$ cd ~/android/cyanogenmod7/device/samsung/cooper
~$ ./extract-files.sh


Alternativa:
~$ cd android/cyanogenmod7
~$ cd vendor/samsung
(não existe? criar manualmente)
~$ git clone https://github.com/vo-1/android_vendor_samsung_cooper cooper

6) Sacar o ROM Manager (requisito necessário para compilar o CyanogenMod):
~$ cd android/cyanogenmod7/vendor/cyanogen
~$ ./get-rommanager


---
Este passo é só para quem escolheu a via "Alternativa" -- ver 4) e 5)
~$ cd android/cyanogenmod7
~$ . build/envsetup.sh

---
Em Debian 7 "Wheezy", criar o atalho python2 para o python2.7:
~$ su
~$ cd /usr/bin
~$ ln -s python2.7 python2

---

7) Iniciar compilação:
~$ brunch cooper

Depois de algumas horas a queimar a CPU, eis que finalmente temos a nossa versão do CyanogenMod (~/android/cyanogenmod7/out/target/product/cooper/cm-7-2013XXXX-UNOFFICIAL-cooper.zip) :)


Desde a última versão "nightly", lançada oficialmente em 01 de Março de 2013, que já foram feitas correcções e alterações importantes (ver changelogs aqui). Ao compilarmos o CyanogenMod directamente da fonte, ficamos com a garantia de ter o sistema sempre actualizado sem estar à espera que alguém o faça por nós ;)

Para mais informações, consultar:
- http://wiki.cyanogenmod.org/w/Build_for_cooper
- http://forum.xda-developers.com/showthread.php?t=2241832
- http://source.android.com/source/initializing.html
...
- http://wiki.cyanogenmod.org/w/Install_CM_for_cooper

Links úteis:
- android-wired-tether

Google Drive/cooper

# edit 01/06/2013:
- ver "Alternativa" do ponto 5.
- adicionado link para a pasta partilhada no Google Drive.

# edit 14/06/2013:
- ver nota para Debian 7 "Wheezy".