Building Android from Source ~ CyanogenMod Nightly

Moin,

da es aktuell keine Nightly für mein HTC Desire gibt, dachte ich mir “Baust’e es dir halt selber”. Das ganze ist eine mehr oder weniger Odysee durch’s web, aber nach ner woche  suche und testing hab ich das den doch mal geschaft, eine einfache anleitung die auf ca 90% aller CyanogenMod Devices trifft als Baukasten…

Kleine info am rande, beim CyanogenMod wird grade auf ICS umgestellt, bis ich da was genaueres weiß is das ganze hier outdated. 

Im grunde beginnt es mit einer munteren Paket installation( getestet auf einem ubuntu 11.10, sollte aber auch auf dem neuen 12.04 oder dem 10.04 laufen)

aptitude update;aptitude 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 sun-java6-jdk pngcrush schedtool ia32-libs g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib

nach der Provisorischen Paket Installation kommen wir nun zum android sdk[ aktuelles android sdk bitte hier als wget angeben]

wget http://dl.google.com/android/android-sdk_r16-linux.tgz;
tar xvzf android-sdk_r*.tgz;
mv android-sdk_r* ~/;
cd ~/android-sdk*;
cd tools;
./android update sdk -u;
./android update adb;
cd ~/android-sdk*/platform-tools/;
wget http://dl.dropbox.com/u/6751304/fastboot;
sudo cp adb /usr/bin/adb;
sudo cp fastboot /usr/bin/fastboot;
sudo chmod 755 /usr/bin/adb;
sudo chmod 755 /usr/bin/fastboot;
mkdir -p ~/bin
mkdir -p ~/android/system
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
export PATH=$PATH:$HOME/bin

Nun haben wir ein android sdk auf der platte und alle pakete, nun kommen wir zu dem punkt der ewig braucht

cd ~/android/system/
repo init -u https://github.com/CyanogenMod/android.git -b gingerbread --repo-url=https://github.com/android/tools_repo.git

Nun ist das git repo bereit zum syncen, aber hier kann man schon zeit und traffic sparen

cd ~/android/system/.repo/
vim manifest.xml

hier alle devices rauslöschen, die man nicht braucht( bei meinem HTC handy brauchte ich z.b nichts von Samsung etc). Nun können wir anfangen die repos zu syncen

repo sync -j20

nach einer halbenewigkeit sollte man das ganze nochmal laufen lassen um zu testen ob es in der zeit des syncs keine weiteren änderungen gab.

repo sync -j10

nach dem sync gibt es 2 möglichkeiten, die eine besteht darin sich die Treiber daten von seinem Handy über adb zu ziehen oder sich diese gleich auch aus einem git repo zu besorgen, letzteres habe ich gemacht, weil es einfach schneller geht und bei meinem Desire nicht mehr alle treiber vorhanden waren [weitere Treiber gibt es unter https://github.com/koush/ hier einfach nach seinem Hersteller schaun und das entsprechende repo laden]

cd ~/android/system/vendor/
git clone https://github.com/koush/proprietary_vendor_htc.git -b gingerbread  --progress
mv  proprietary_vendor_htc htc

Nun brauchen wir nur noch eine aktuelle version des RomManagers

~/android/system/vendor/cyanogen/get-rommanager

Nachdem wir jetzt alle daten endlich mal zusammen haben,  können wir anfangen :)

USE_CCACHE=1
. build/envsetup.sh && brunch <device>

nach ca 20 min ( je nach Hardware) sollte nun unter

~/android/system/out/target/product/<device>/

eine update.zip sowie eine update.md5sum datei liegen, diese kann man [VORHER NANDROID BACKUP MACHEN] auf seinen androiden ziehen und fröhlich flashen.

wie immer übernehme ich keine Garantie oder sonstiges das das Tutorial funktioniert :) aber am ende sollte es etwa so ausschauen

(die git sammlung etc stammt aus mehreren quellen u.a  https://github.com/nicandris/CM-from-scratch und den xda developers forum )