________________________________________________________________________________________________________________________________

domenica 15 gennaio 2012

[SMARTPAD810C][GUIDA] Compilare cyanogen per l'emulatore

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: http://smartpad810c.blogspot.com/2012/01/guida-anatomia-della-rom-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'archiviohttp://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


Guida di Eldiau

0 commenti:

Posta un commento

Twitter Delicious Facebook Digg Stumbleupon Favorites More