[HowTo] Build CyanogenMod 10.2 (by Dazzazo)

  • 18 Antworten
  • Neuester Beitrag
Diskutiere [HowTo] Build CyanogenMod 10.2 (by Dazzazo) im Custom-ROMs für Huawei Ascend Y300 im Bereich Root / Custom-ROMs / Modding für Huawei Ascend Y300.
B

Bowfinger

Stammgast
Nach ca. 1,5 Wochen und einiger Hilfe durch Dazzozo ist es mir gelungen den CM 10.2 Port von Dazzozo zu bauen.

Um euch mehrere Stunden der Suche (und Dazzozo eine Menge Support Aufwand) zu sparen kommt hier also die Anleitung wie man sich den CM 10.2 Port von Dazzozo selber auf seinem PC bauen kann.


Voraussetzungen:

  1. Linux 64 Bit!
  2. Linux Kenntnisse (Du weist wie man ein Terminal-Fenster öffenet und damit umgeht)
  3. Vollständiges CM Build environment.
  4. Git repositories von Dazzoz und legaCyMod


Linux 64 Bit:


Ihr könnt euch ein Linux parallel zu eurem Standard OS aufsezten, oder als Virtuelle Maschine.
Ich werde hier nur darauf eingehen welches Linux ich verwendet habe, ich werde keinen Support leisten wenn Ihr nicht das gleiche Linux verwenden wollt.


Ich habe Linux als Virtuelle Maschine aufgesetzt, weil es einfach praktischer ist.



  1. Installiere Dir VirtualBox (https://www.virtualbox.org/)
  2. 2. Erzeuge eine neue Virtuelle Maschine mit mindestens 100 GB Harddisk und 1,5 GB RAM.
  3. Installiere Ubuntu 13.04 in der 64 Bit Version (http://releases.ubuntu.com/raring/ubuntu-13.04-desktop-amd64.iso) in der Virtuellen Maschine
  4. Wenn das geschehen ist die VirtualBox Gasterweiterung installieren. (Muss evtl. neu installiert werden, wenn der Kernel aktualisiert wurde beim Software Update)


CM Build environment aufsetzten:


Jetzt wird es spassig :scared:

Java
Zuerst müssen wir das "falsche" Java entfernen und das "richtige" installieren.
die CM build-chain benötigt Java 6 von Oracle ( ehemals Sun)

Im Terminal-Fenster folgendes eingeben:
Code:
sudo apt-get purge openjdk*
entfernt das openjdk...

Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
installiert das richtige jdk von oracle

Android SDK
Das Android SDK benötig auf 64 Bit systemen die 32 Bit Kompatibilitäts-Libraries...
Code:
sudo apt-get install ia32-libs
Nun musst Du dir das Android SDT installieren. Du kannst es von Android SDK | Android Developers runter laden.

Auspacken in einem beliebigen Verzeichniss, ich habe mir ein verzeichniss Development in meinem home angelegt und das Paket dahin entpackt.

adb und fastboot brauchen wir erstmal zum übersetzen nicht, deshalb werde ich auch nicht weiter darauf eingehen.

Build Pakete

und es geht weiter ...
Code:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils xsltproc g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib
Build verzeichnisse und das CM repository:

Code:
mkdir -p ~/bin
mkdir -p ~/android/system
Nun kann das repo-script von CM installiert werden.
Dieses brauchen wir um den kompletten Source von CM auf unseren Rechner zu synchonisieren.

Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Nun müssen wir das ~/bin verzeichnis in unseren PATH mit aufnehmen.

Code:
gedit ~/.bashrc
am ende der Datei folgendes einfügen und abspeichern:
Code:
export PATH=${PATH}:~/bin
terminal session beenden und neu starten, dann ist auch ~/bin im Suchpfad.

Git sollte jetzt mit deinen Userdaten personalisiert werden.

Code:
git config --global user.name "Your Name Comes Here"
git config --global user.email you@yourdomain.example.com
Jetzt können wir anfangen die Sourcen zu laden...
Code:
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
repo sync
Nach dem letzten Schritt können wir uns zurück lehnen und für ca. 1 Stunde was anderes machen (ausser du hast eine 50 MBit Leitung oder schneller )

Als letzten Schritt für diesen Abschnitt laden wir jetzt die CM prebuilts
Code:
cd ~/android/system/vendor/cm
./get-prebuilts

Git reposirories von Dazzoz und legaCyMod einbinden:


Es müssen nun die externen Repositories eingebunden werden.

Da ich faul bin habe ich mir ein kleines Script geschrieben, das diese Arbeit für mich erledigt.

Script zum laden der weiteren benötigten Repositories

https://drive.google.com/file/d/0B482H35KZVOJOUJsMVNXWFNfb0U/edit?usp=sharing

in ~/bin kopieren und mit
Code:
chmod a+x ~/bin/get_non_cm_repos.sh
ausführbar machen.

Das Script erwartet das CM 10.2 im Verzeichniss ~/android/system installiert wurde.
Es wird alle erforderlichen Repositories hinzufügen.

Aufrufen mit
Code:
get_non_cm_repos.sh
Das kann auch etwas dauern, da der Kernel recht groß ist.


Nun wird gebaut ...

Zuerst müssen wir das Environment richtig setzten, das geschieht mit
Code:
cd ~/android/system
. build/envsetup.sh
Zu Zeit müssen einige Teile noch per Hand gepatcht werden:

Code:
device/huawei/msm7x27a-common/patches/apply.sh
Code:
[COLOR=Silver][COLOR=Black][COLOR=Silver][COLOR=Black][COLOR=Silver][COLOR=Black][COLOR=Silver][COLOR=Black]device/huawei/u8833/patches/apply.sh
[/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR]


Der Patch muss jedesmal wiederholt werden, wenn man den CM Source aktualisiert hat!

Wenn jetzt alles geklappt hat fehlt nur noch ein Schritt zum fertigen ROM

Code:
brunch u8833
Am ende sollte in ~/android/system/out/target/product/u8833 ein fertiges ROM liegen .

Achja, nicht wundern je nach System dauert der Build 1 - 2 Stunden

Aktuelle Zeitmessungen:
- Komplettes Bauen bei vorherigem make clean : 1 Stunde
- nur Änderungen Bauen (repo sync vorher) : 15 Minuten


Updates einspielen und erneut bauen

Man will ja aber nicht nur einmal bauen, sondern die Updates die in CM und dem Y300 Port gemacht werden regelmäßig übernehmen und eine neue Version daraus bauen.

Zuerst müssen die CM Sourcen aktualisiert werden

Code:
cd ~/android/system
repo sync
Nun müssten auch alle nachträglich eingebrachten Repositories aktualisiert werden.
Hierfür habe ich wieder ein Script geschrieben.
https://drive.google.com/file/d/0B482H35KZVOJenQxcXFEbHBuNXM/edit?usp=sharing
Dieses wie das andere in ~/bin kopieren und ausführbar machen.

Danach das Script ausfürhen
Code:
update_non_cm_repos.sh
das Script führt auch gleich die benötigten Patches aus.

Nun kann neu gebaut werden...
Code:
[COLOR=Silver][COLOR=Silver][COLOR=Black]cd ~/android/system
. build/envsetup.sh
brunch u8833
[/COLOR][/COLOR][/COLOR]


Weiterführende Links:

Gapps Goo.im Downloads - Downloading gapps-jb-20130813-signed.zip

Github von Dazzozo https://github.com/Dazzozo
Jenkins von Dazzozo Dashboard [Jenkins]

ICH HABE FERTIG !



 
Zuletzt bearbeitet:
M

mario_b

Erfahrenes Mitglied
Hallo,

ich bin mal Deiner Anleitung gefolgt um nicht alles neu zu erfinden - dafür erst mal Danke. Aber leider komme ich nicht zum bauen:

including vendor/cm/vendorsetup.sh
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[device/huawei/u8833/cm.mk]]: "frameworks/base/data/videos/VideoPackage2.mk" does not exist. Schluss.
Device u8833 not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).


Entweder ist der Tree gerade broken - oder ich habe irgendwas übersehen ?

*argh* - repo sync scheint nicht - sagen wir mal - ganz so consistente Trees zu leifern ? - habe den frameworks tree weg geschmissen und noch mal das repo gesync jetzt ist alles da in dem tree ;-)

Gruß Mario
 
Zuletzt bearbeitet:
B

Bowfinger

Stammgast
Ja, irgendwie geht was kaput beim Update über repo sync.

Ich musste auch nochmal komplett das framework_av und framewotk_native wegwerfen.

Das liegt wohl daran, das diese repositories mit den geänderten von Dazzozo überschrieben werden.

Aber ein anderer Weg ist mir nicht eingefallen.

Geht es denn jetzt ?
 
M

mario_b

Erfahrenes Mitglied
Hi,

sorry - ja lief jetzt durch - hab mich noch nicht getraut zu Installieren ;-) Werde erst am Wochenende wieder weiter spielen.

Gruß Mario
 
Shadowghost

Shadowghost

Erfahrenes Mitglied
Einmal ein paar allgemeine Fragen:
1) Theoretisch geht das doch dann auch mit CM11 (muss man dann eben das CM11-Repo, statt dem CM10.2-Repo nehmen) oder liege ich da falsch?
2) Hat schon einmal jemand versucht mit den Änderungen von legaCyMod und Daz ein pure Android zu kompilieren bzw geht das überhaupt?

LG Shadowghost
 
B

Bowfinger

Stammgast
Zu 1. Ja, so ist das. Zusätzlich muss Du in die CM11 Branches von Dazzozo wechseln.
zu 2. keine Ahnung.
 
D

daddelgreis

Gast
Das änderst du so beim holen der Repo
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
repo sync
Der Rest der Anleitung bleibt gleich.

Man kann das ganze noch in das Manifest eintragen dann erspart man sich eine menge schreibkram das würde dann jedesmal bei repo sync alles wieder neu geladen werden.

Zu1: Den Branches muss er nicht weckseln es wurde alles in den Master Branches verschoben cm10.2 & cm11 sind beide jetzt Master.
Zu2: Gehen würde das schon aber ich glaub dazu brauchst du zusätzlich noch den python die Build wird glaub ich mit $ lunch aosp_arm-eng erstellt.

Gruß Daddel
 
Zuletzt bearbeitet von einem Moderator:
Shadowghost

Shadowghost

Erfahrenes Mitglied
Also habs schon am Samstag geschafft CM11 zu kompilieren, allerdings fehlt der SE-Linux-Support und Busybix lässt sich nicht installieren.
Zu der Sache mit Aosp: hab mich da mal schlau gemacht, so einfach ist es nicht, da die CM-Device-Trees nicht mit denen für Aosp kompatibel sind und ich keine Ahnung habe, wie man sie anpassen müsste.
Hab auch versucht mit den Anpassungen von Daz Aokp zu kokpiliern, allerdings holt der sich die Geräteinfos woanders her, wie es CM tut und lässt sich daher nicht kompilieren.

LG Shadowghost
 
D

daddelgreis

Gast
Mit den AOSP muss es eigentlich gehen Daz hatte schon eine für das G300 ausgeworfen,Dazzozo wird jetzt nicht das Rad neu erfinden klar ist laut seiner Aussage das es eben schwerer ist ein AOSP Rom zu erstellen als die CM.

Das bei der CM 11 SE-Linux-Support fehlt kann eigentlich nicht sein du machst ja im grunde nichts anderes wie der Build-Server von daz auch kannste auf Jenkins von Daz nachverfolgen Konsolenausgabe.

Ich hatte schon paar mal über AOSP nachgedacht hab es aber dann verworfen weil mein Laptop zu lange braucht um eine Build zu erstellen 4 Stunden rund da vergeht dir die lust drauf.

Im Grunde dürfte das gar nicht so schwer sein.

Gruß Daddel
 
Zuletzt bearbeitet von einem Moderator:
Shadowghost

Shadowghost

Erfahrenes Mitglied
Ich werde morgen mal die Sources neu syncen und nochmal ne build durchlaufen lassen (geht ca. 3/4h bis 1h) - mal schaun, ob diesmal alles dabei ist...

Also wenn du eine AOSP-Tree vorbereitest, könnte ichs dir auch kompilieren, dann wüsste man zumindest mal, ob es geht.

LG Shadowghost
 
D

daddelgreis

Gast
Am Anfang vom Ende sieht es dann so aus.

Screenshot_2014-01-18-08-16-55.pngScreenshot_2014-01-18-08-17-05.pngScreenshot_2014-01-18-08-17-12.pngScreenshot_2014-01-18-08-17-28.png

Gruß Daddel
 
Zuletzt bearbeitet von einem Moderator:
Shadowghost

Shadowghost

Erfahrenes Mitglied
Cool, funktioniert die ROM soweit oder gibts noch schwerwiegende Probleme?
 
Zuletzt bearbeitet:
B

BigLeo

Gast
Sieht gut aus daddelgreis!
Wirst du sie veröffentlichen?
 
D

daddelgreis

Gast
veröffentlichen?
Nein eigentlich nicht war nur ein Test von mir ob man Device Tree und Kernel Tree auf einen normalen AOSP verwenden kann.
 
shoxxy

shoxxy

Stammgast
Hi

AOSP würd ich gern für mein G510 Builden

könntest du mir sagen welchen device tree und kernel source du verwendet hast? bzw die repos verlinken??

Danke Gruß Shoxx
 
D

daddelgreis

Gast
könntest du mir sagen welchen device tree und kernel source du verwendet hast? bzw die repos verlinken??
Device Tree und Kernel Source sind von Dazzozo den rest musst du schon selbst anpassen bzw umschreiben das du einen lunch ausführen kannst.

Googel ist da im übrigen sehr Hilfreich

Gruß Daddel
 
Zuletzt bearbeitet von einem Moderator:
shoxxy

shoxxy

Stammgast
hi
ja google hilft ... das stimmt aber wenn du die rom erfolgreich erstellt hast frag ich doch mal hier..... koenntest du mir grob sagen was noch angepasst werden muss die repos von dazzozo inkl vendor files hab ich drauf. lunch funktionierte auch , nur als ich den build starten wollte kam ne fehlermeldung. irgendwas aus dem core ordner. bin arbeiten deswegen kann ich das jetzt nicht genau sagen. muss ich heute nachmittag nochmal weiter schauen....

erstmal danke

gruss shoxx
 
D

daddelgreis

Gast
Puhh das war eine Menge die geändert werden musste fängt an bei Python an für den Launch bis die richtige Source laden https://android.googlesource.com/platform/build/ bis hin zur Board Config.

Mann muss sich erst mit den Build-Prozess auseinandersetzen das alles hier hin zu schreiben wäre zu viel das ist nicht in einer stunde erledigt ich hab sehr viel googeln müssen so eine Woche lang bis der Build ordentlich durchlief.

Das wichtigste ist das du die Fehler beim Build abarbeiten musst und zwar immer nur den ersten fehler die weiteren Fehler die hinterher kommen sind folge fehler vom Ersten.

Gruß Daddel
 
shoxxy

shoxxy

Stammgast
ja ok da hab ich ja noch ordentlich was zu tun. danke erstmal , fuer die info werd ich mich. die naechsten tage mal ransetzen. danke gruss shoxx