Compilare CyanogenMod per Galaxy Nexus – Maguro

Galaxy Nexus e CyanogenMod

Galaxy Nexus – CyanogenMod

Sebbene CyanogenMod 10.1 per il Galaxy Nexus sia aggiornata e (direi) perfettamente funzionante, potrebbe essere interessante o utile compilarla da soli, per effettuare qualche modifica, integrare codice già scritto ma non approvato o anche solo per curiosità.

Il sistema

Inizio precisando che è necessario utilizzare un computer con un sistema basato su Linux, e necessariamente a 64 bit: dovrebbe funzionare anche su una distribuzione live o su una macchina virtuale, ma visto che stiamo per compilare un progetto relativamente grande, potrebbero aumentare molto i tempi di compilazione. Io ho usato Arch Linux, ma non dovrebbero esserci problemi con altre distribuzioni.

Do per scontato che sia installata la Android SDK, se non lo è consiglio di seguire la guida della distribuzione che si sta usando.

È inoltre necessario installare una serie di pacchetti:

git-core g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib 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 xsltproc

Su Arch Linux è sufficiente il comando

pacman -S git-core g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib 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 xsltproc

In ogni caso è opportuno utilizzare il gestore di pacchetti della distribuzione.

Il cellulare

È inoltre necessario avere il Galaxy Nexus a portata di mano e funzionante: per la compilazione sono necessari file che verranno estratti dal cellulare stesso (non dovrà stare collegato per tutto il processo :D). Verifichiamo che il sistema veda il telefono collegato via USB e che ADB riesca a cominicare, per permetterlo abilitiamo la modalità sviluppatore sul cellulare andando su “Info sul telefono” e cliccando cinque volte sul Numero build. Tornando indietro vedremo che è comparso il menù per sviluppatori, da qui abilitiamo il debug USB.

Verifichiamo che il cellulare sia riconosciuto dal computer con il comando

adb devices

Che dovrebbe restituire la lista di dispositivi Android connessi.

Prepariamoci!

Iniziamo creando le cartelle che conterranno i sorgenti, in questo caso le creerò nella cartella home

$ mkdir -p ~/bin
$ mkdir -p ~/android/system

Scarichiamo ora l’eseguibile repo, che sarà necessario in seguito per sincronizzare i sorgenti, e impostiamo la cartella che lo contiene come percorso di esecuzione (per poter usare repo anche dopo aver cambiato directory)

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=${PATH}:~/bin

Ora siamo pronti per sincronizzare il nostro repository con quello di CyanogenMod e scaricare i sorgenti più aggiornati

$ cd ~/android/system/
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
$ repo sync

Questo processo richiederà molto tempo, aspettiamo 😀
Di default viene usato il parametro -c, che dice a repo di scaricare solo la build attuale, ma è possibile specificare diversamente.
Ora possiamo scaricare le applicazioni precompilate: non è necessario ricompilare proprio tutto il sistema, alcune applicazioni seguono uno sviluppo a parte e possono essere scaricate già compilate. Spostiamoci nella cartella dove verranno salvate e avviamo il download.

$ cd ~/android/system/vendor/cm
$ ./get-prebuilts

Ora abbiamo il sorgente del sistema e le applicazioni standard, è necessario specificare per quale dispositivo stiamo per compilare la ROM: nel nostro caso il Galaxy Nexus, con il nome Maguro.

Torniamo alla root del sorgente e scarichiamo i file specifici per il Maguro

$ source build/envsetup.sh
$ breakfast maguro

A questo punto colleghiamo il Galaxy Nexus e estraiamo i file proprietari

cd ~/android/system/device/samsung/maguro
$ ./extract-files.sh

Compiliamo 😀

Se abbiamo intenzione di compilare anche versioni successive, possiamo abilitare la cache di compilazione che velocizzerà il processo in futuro

$ export USE_CCACHE=1

Torniamo ora alla directory principale del progetto e iniziamo a compilare

$ cd ~/android/system/
$ brunch maguro

Non ci resta che aspettare 😀

Troveremo la ROM compilata in formato ZIP, pronta per essere installata da recovery. Inoltre viene compilato anche ClockworkMod Recovery, che troveremo nel file recovery.img.

A questo punto, se non ci sono stati problemi, possiamo darci alla modifica della ROM, con codice nostro o con i Cherry Pick, codice in attesa di approvazione (o disapprovazione). Farò un articolo in seguito sull’utilizzo e l’integrazione di questo codice.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *