Attenzione: Questa guida non e' un porting di cyanogen per il nostro tab!!! Non vi premettera' di far girare questa rom, lo scopo e' quello di dare una spinta allo sviluppo!!
molte delle informazioni che sto per scrivere sono dedotte analizzando la rom e leggendo guide, forum ecc.. ecc.. quindi potrebbero essere imprecise o sbagliate! Mandatemi eventuali correzioni o aggiunte qui nel thread ma anche in messaggio privato dove e' piu' probabile che le veda al volo, cosi' posso integrarle nella quida. Una parte consistente di questa guide e' presa dal wiki di cyanogenmod
Android SDK Emulator: Compile CyanogenMod (Linux) - CyanogenMod Wiki modifcata con alcune correzione e ampliata, il wiki di cyanogenmod e' zeppo di informazioni, fateci un giro!
Per chi: Questa guida e' pensata per dev con una ottima conoscenza di linux, che abbiano almeno una infarinatura di sviluppo C con GCC e Java
Leggete prima l'altra mia guida:
https://www.androidiani.com/forum/me...om-rk29xx.html
Sappiamo che android in gran parte e' un sistema opensource (escludendo le gapps come il market o gtalk e alcune parti come la sintesi vocale che sono chiuse e copyright di google), per questo motivo gran parte dei sorgenti e dell'ambiente di sviluppo vengono pubblicate sotto il nome di ASOP (Android Open Source Project) su
Welcome to Android | Android Open Source che ad oggi e' aggiornato a Gingerbread (honeycomb non e' stato e mai sara' pubblicato) e fra qualche mese passera' ad Ice cream sandwich.
Utilizzando questi sorgenti una folta comunita' di super-hackers ha iniziato ad arricchire i sorgenti di nuove funzionalita' e tweaks creando la rom android aftermarket piu' famosa ed usata CyanogenMOD! (l'altra rom derivata da ASOP piu' usata e la MIUI ma gli sviluppatori non sono molto aperti e non pubblicano tutto il loro codice), la versione attuale CM7.1 e' ovviamente basata su Gingerbread ma appena verranno publicati i sorgenti passera ad Ice cream. C'e' una grossa differnza fra una rom moddata, dove si possono fare piccoli moglioremente e cambiamenti e una compilata da zero dove si ha il controllo completo sul sul sistema!
Per far fare il "salto di qualita'" al nostro tablet sarebbe fantastico riuscire a portare una rom com la CyanogenMOD il che,in futuro, ci porterebbe anche Ice cream ! Per riuscire nell'intento dobbiamo creare un device con i rispettivi makefiles, extract-files.sh, overlay ecc... ecc... ma prima di tutto occorre imparare a compilare cyanogen da zero almeno per l'emulatore e famigliarizzare con la sua struttura.
Il nostro scopo e' ricavare una boot.img e una system.img funzionanti.
Andiamo per passi:
1 - UBUNTU 11.10
E' necessario utilizzare linux! Io uso Ubuntu linux 11.10 64bit quindi posso dare garanzie che questa guida funzionera' su questo sistema, se usate windows vi sogniglio di scaricare VirtualBox che vi permette' di far girare ubuntu "sopra" a windows e usarli contemporaneamente. Quando installate o create la virtual machine ricordate che solo per compilare ci servono 15Gb quindi consiglio di dare almeno 25Gb a linux
2 - Software necessario
Occorre scaricare e installare tutti gli i pacchetti necessari, apriamo un terminale e digitiamo i seguenti comandi:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool
Se utilizzate ubuntu a 64bit eseguite anche:
sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib g++-multilib
Ci servono anche le JDK 1.6 che non sono incluse dei repo di Ubuntu quindi aggiungiamo il repo necessario:
sudo add-apt-repository ppa:ferramroberto/java
e:
sudo apt-get update
quindi installiamo java developer kit:
sudo apt-get install sun-java6-jdk sun-java6-plugin
(vi chiedera' di accettare la licenza java)
verificate di utilizzare il java giusto con "java -version":
utente@vmotheru:~$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
3 - Installiamo ADK
L'android developer kit, serve a sviluppare applicazioni per android ma contiene un comando molto utili "adb" l'android debugger che ci permette di collgarci al tablet via usb e vedere il log, lanciare una shell, scaricare e caricare file sul sistema.
Installiamo l'android developer kit scaricando da
Android SDK | Android Developers l'archivio
http://dl.google.com/android/android-sdk_r15-linux.tgz e salvandolo nella nostra home /home/utente (dove utente e' il nostro user!!)
sempre da terminale lo scompattiamo:
tar xvzf android-sdk_r15-linux.tgz
quindi ci troviamo la cartella android-sdk-linux in /home/utente, lanciamo il comando:
~/android-sdk-linux/tools/android
che apre l'sdk manager e scarica alcune informazioni da internet, quando avra' finito abilitiamo "tools" e "android 2.3.3" e clicchiamo su "Install", accettiamo la licenza e attendiamo che finisca
4 - Prepariamo il repository
mkdir -p ~/bin
curl https://raw.github.com/android/tools_repo/master/repo > ~/bin/repo
rendiamo eseguibile lo script:
chmod +x ~/bin/repo
modifichiamo il path della nostra shell con il comando:
gedit .bashrc
Si aprira' la finstra dell'editor andiamo in fondo e aggiungiamo la linea (occhio a sostiuire "utente" con il vostro user!):
export PATH=$PATH:~/bin:~/android-sdk-linux/platform-tools/:~/android-sdk-linux/tools/
chiudiamo il terminale e lo riapriamo, in questo modo nel nostro path di ricerca comandi avremo anche i comandi "adb" e "repo"
procediamo con i seguenti comandi per inizializzare il repo:
mkdir -p ~/android/system
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread --repo-url=git://github.com/android/tools_repo.git
vi fara' un paio di semplici domande...
"synchiamo" i sorgenti:
cd ~/android/system/
repo sync
Questo ultimo comando scarica tutti i sorgenti di android e dipendentemente dalla vostra connessione durera' anche ore!
scarichiamo l'apk del rommanager:
~/android/system/vendor/cyanogen/get-rommanager
5 - Compilamo!
cd ~/android/system/
. build/envsetup.sh
lunch cyanogen_generic-eng
mka
solo questi ultimi 4 comandi verranno utilizzati ad ogni compilazione!!!
Se in compilazione riceveste un errore del tipo "
You have tried to change the API from what has been previously approved." eseguite:
make update-api
e riprovate!!
se volessimo aggiornare il nostro sorgente con gli ultimi sviluppi possiamo usare:
cd ~/android/system/
repo sync
Attenzione perche' cyanogen e' in evoluzione e a volte il repo non e' compilabile perche gli sviluppatore anno introdotto qualche errore, quindi una volta che avete un repo che compila eseguite "repo sync" solo per valide ragioni.
Se tutto e' anadato bene troverete in:
~/android/system/out/target/product/generic
due cartelle root e system.
root: da questa cartella dovremo ricostruire boot.img
system: da questa cartella dobbiamo ricostruire system.img
Per iniziare a provare la strada piu' corta e' prendere un boot.img da una delle rom che usano system in ext3, crerae una immagine ext3 di system e flashare, il mio risultato fino ad ora e' di riuscire a fare il boot fino a zygote (e gia' non e' male!) poi pero' zygote crasha e la rom rebootta...
P.S.
Tutto questo meccanismo ha il bonus di lasciarvi in:
~/android/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3
on in (a seconda della vostra architettura):
~/android/system/prebuilt/linux-x86_64/toolchain/arm-eabi-4.4.3
Il gcc per arm che vi premette di compilare il kernel o anche roba tipo busybox