Premettiamo che io non sono un developer, bensì un appassionato di modding che si sta affacciando al mondo del development in ambiente android.
Non mi assumo alcuna responsabilità, né io, né Androidiani, di una vostra build corrotta nel kernel o nella partizione di boot che danneggia, al flash, il vostro device: state sperimentando a vostro rischio e pericolo, sia chiaro.
La guida prende ispirazione da quella compilata dal team della Cyanogen sul loro Wiki, tutti i crediti vanno a loro.
Cosa vi servirà
- Un Samsung Galaxy SII (i9100)
- Un pc relativamente recente, possibilmente con su un sistema operativo Linux ed un ragionevole contenuto di RAM: minore sarà la RAM, più lungo sarà il processo di building. Gli SSD velocizzano, inoltre, il processo.
- Un cavo micro USB, meglio se originale Samsung.
- Una connessione internet decente (lo so, siamo in Italia e non è possibile) e un attacco alla corrente elettrica.
- Un po' di familiarità con le operazioni relative ad Android ed alla terminologia.
- Familiarità coi comandi da terminale Linux e della gerarchia delle cartelle.
Preparazione ambiente di lavoro
Se non avete installato precedentemente "adb" e "fastboot", è il tempo di farlo. Installate Android SDK (Software Development Kit).
Scaricato il file, de-comprimete il file .tgz (è una tipologia di archivio usata in Linux). Di default, i file del SDK sono compressi in una cartella chiamata android-sdk-linux_x86. Spostate la cartella in un luogo consono, tipo in ~/Development (~ sta per home).
Se state usando una distro con architettura a 64 bit (e si spera che la stiate usando), dovrete installare i pacchetti ia32-libs semplicemente digitando da terminale:
codice:
sudo apt-get install ia32-libs
Successivamente installate Java dal repository di webupd8team:
codice:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
Installazione dei pacchetti necessari per il build
Vi serviranno diversi pacchetti per buildare la CyanogenMod. Potete installarli da terminale:
codice:
sudo apt-get install bison build-essential curl flex git-core gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
Creazione delle cartelle
Dovrete creare due cartelle dove posizionare tutto il lavoro, le potete chiamare come le volete, ma questa guida si baserà sui nomi specifici qui di seguito, quindi tanto vale usare questi e poi quando avrete più dimistichezza, vi orienterete da soli.
codice:
mkdir -p ~/bin
mkdir -p ~/android/system
In questo modo creerete la cartella bin (che deve avere obbligatoriamente questo nome per poi settare la variabile d'ambiente) nella home e la cartella android, sempre nella home, con dentro la cartella system.
Installazione del comando "repo"
Il comando repo vi sarà indispensabile per gestire i vari file per buildare la vostra rom da remoto a locale e viceversa.
Inserite i seguenti comandi, sempre da terminale:
codice:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Mettete ~/bin nel PATH di esecuzione
Questo passaggio vi consentirà di eseguire il comando "repo" da qualsiasi punto del vostro sistema operativo senza andare a richiamare l'eseguibile dalla cartella ogni volta:
codice:
export PATH=${PATH}:~/bin
Per rendere questo cambiamento perenne, dovrete inserire la stringa nel file nascosto che gestisce le variabili d'ambienti da shell:
codice:
cd
gedit ~/.bashrc
Il primo comando vi porterà nella vostra home, che è dove è presente il file .bashrc. Il secondo, gedit, aprirà un text editor che andrà a modificare il file .bashrc. Aggiungete alla fine del documento
codice:
export PATH=${PATH}:~/bin
Salvate e chiudete.
Inizializzate i repository Cyanogen
Da terminale date:
codice:
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
NB. il forum pone due linee blu sotto la parola CyanogenMod creando uno spazio prima e dopo la parola che, però, non va messo quando copincollate il codice. Fate attenzione. [Thanks a Tiaz92 per la segnalazione]
Il primo comando vi porterà nella cartella ~/android/system che avete creato prima ed il secondo scaricherà i file necessari al futuro download. Notate la stringa -b cm-10.2: -b sta per branch, scaricherà il branch relativo alla CyanogenMod 10.2 e quindi i relativi file.
Download del codice sorgente
Per iniziare a scaricare il codice sorgente, sempre nella cartella ~/android/system
Questo passaggio sarà il più lungo, specialmente per noi che viviamo in un paese la quale connessione internet fa ridere ai polli. Possiamo velocizzare il download aggiungendo l'opzione -jX, dove per X si intende il numero di jobs (no, non Steve, ma lavori per volta), ma github è settato per scaricare usando 4 jobs per volta. Più jobs per volta possono arrecare danni.
Se comunque dovreste sentire problemi, potete abbassare la velocità dando, al posto di repo sync
Mettetevi il cuore in pace, può arrivare ad impiegarci anche 10-15 ore perché scaricherà (dipende da cosa scaricate) 8~15GB di roba.
Ottenete le applicazioni di prebuilt
Una volta che ha terminato il download, date da terminale:
cd ~/android/system/vendor/cm
./get-prebuilts
Questo comando installerà alcune applicazioni nel codice sorgente.
Preparazione del dispositivo
Dopo il download, dovrete preparare il vostro device:
codice:
cd ~/android/system
source build/envsetup.sh
breakfast i9100
Questo scaricherà la configurazione specifica ed il codice sorgente del kernel per il vostro device.
Per non incappare in errori, provate ad aggiornare il comando repo, dando, prima della serie di comandi qui sopra:
Estrazione dei blobs proprietari
Connettete il vostro Galaxy SII via USB al pc e digitate da terminale:
codice:
cd ~/android/system/device/samsung/i9100
./extract-files.sh
Questo comando estrarrà i blob proprietari del device e li posizionerà nella vostra cartella ~/android/system/device/samsung/i9100.
Abilitate la CCACHE
Per velocizzare l'operazione di build, fate uso della CCACHE digitando da terminale:
codice:
export USE_CCACHE=1
Buildiamo!
Iniziate a buildare! Digitate da terminale:
codice:
cd ~/android/system
source build/envsetup.sh
brunch i9100
Se il comando brunch non dovesse funzionare, digitate:
codice:
cd ~/android/system
lunch
scegliete il vostro device
make -jX
Attenzione al comando make -jX: X sarà il numero dei core della vostra CPU sul PC. Aumentare il numero, non velocizzerà la build, ma avrà come unico effetto quello di farvi laggare anche il cursore del mouse!
Una volta che la build è completata (il tempo impiegato è proporzionale alle specs del vostro pc, con un quad core da 1.4ghz, 6gb di ram io ci impiego 3 ore circa), digitate da terminale:
Vi porterà nella cartella di output della vostra build. Lì troverete tutti i file che sono stati creati: la roba che andrà in /system sarà in una cartella chiamata system, la roba che diventerà la vostra ramdisk sarà nella cartella root ed il kernel sarà kernel.
I file che vi interesseranno saranno recovery.img, che contiene la ClockworkMod recovery e cm-[data della build].zip, che conterrà la vostra CyanogenMod.
Da adesso in poi, sapete cosa fare: flashate il vostro zip appena creato da recovery (il file recovery.img vi servirà solo se non avete una recovery installata) e godetevi la vostra ROM CyanogenMod homemade!