[AOSP][DEV][JB][JRO03H] CyanogenMod10

MadMurdoc

MadMurdoc

Ehrenmitglied
6.047
Auf Wunsch von einigen Usern, rufe ich diesen Developer Thread ins Leben.
Hier soll es sich ausschließlich um das entwickeln von Android ROMs drehen, genauer gesagt von CyanogenMod 10. Ich bitte euch daher hier nur über Dev Themen zu sprechen, sei es eine Modifikation welche ihr einbauen wollt oder eine Idee habt welche hier besprochen werden kann über die Art der Umsetzung.

Denkt bitte daran, dieser Thread richtet sich an Leute, welche wissen im Umgang mit Linux und das bauen von Software aus Quellen haben, über Hilfe wie man CyanogenMod installiert wird es hier nicht gehen und wird es hier auch nicht geben, dafür gibt es extra diesen Thread.

Ein wenig Erfahrung mit dem Programmieren, speziell mit Java, sollte man schon haben um zu wissen worum es heir geht.



Inhalt

Bauumgebung unter Ubuntu 12.04 erstellen
Ein Alternativer Weg um die Bauumgebung zu erstellen
Compilieren von Android
Thread Changelog
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Quaidi, remus, Das-Ich und 2 andere
Im Folgenden werde ich euch eine kleine Step-by-Step-Anleitung geben, mit der ihr unter einem Ubuntu (12.04) die Bauumgebung aufbauen könnt. Dabei setze ich voraus, dass ihr euch mit Linux und dem Terminal auskennt. Wer sich damit nicht auskennt, sollte sich erst einmal über Linux und das Terminal informieren; hier wird es diesbezüglich keine Hilfe geben, da es einfach den Rahmen sprengen würde.

Das Nachrüsten der fehlenden Pakete
Als erstes öffnet ihr ein Terminal-Fenster. Von Werk aus ist ein Ubuntu-System nicht mit den benötigten Paketen, welche zum Bauen von Android und Co. benötigt werden, ausgestattet. Wir müssen also diese Pakete nach installieren.

Code:
apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 g++-multilib  mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 pngcrush
Das Anlegen der entsprechenden Verzeichnisse
Nachdem wir die fehlenden Pakete uns über unseren Paketmanager gezogen haben, fangen wir an unsere Umgebung zu erstellen. Ich persönliche bevorzuge es, meine Bauumgebung in meinem Homeverzeichnis zu hinterlegen, das könnt ihr aber selbst entscheiden.
Wir bleiben im Terminal und gehen wie folgt vor:

Code:
mkdir -p ~/bin
mkdir -p ~/android/system/.repo
Wir navigieren in unsere Bauumgebung mittels:

Code:
cd ~/android/system
Jetzt können wir uns das Build-Skript vom Team Hacksung aus dem Internet laden. Das Skript ist recht praktisch, da es alles was wir machen müssen, um unser ROM zu bauen, aus dem Internet zieht, sprich die Quellen für unsere entsprechende Base, sei es GB, ICS oder JB. Mittels,

Code:
wget https://raw.github.com/teamhacksung/buildscripts/jellybean/samsung/build.sh
laden wir das Skript herunter, es wird als build.sh gleich in unserem Verzeichnis abgespeichert. Da wir dieses Skript jetzt noch nicht ausführen können, weil es keine Execute Rechte besitzt, müssen wir diese noch zuweisen und das passiert mittels:

Code:
chmod +x build.sh
Die Sourcen hinzufügen und herunterladen
Bevor wir unser Skript ausführen, sollten wir erst mal die Sourcen definieren, welche wir benötigen. Das machen wir Mithilfe einer XML-Datei, welche wir wie folgt erstellen:

Code:
nano ~/android/system/.repo/local_manifest.xml
Damit öffnet ihr einen Editor und müssen nun die XML nur noch mit Informationen füllen. Kopiert am besten folgendes rein:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="teamhacksung/buildscripts" path="buildscripts" remote="github" revision="jellybean">
<copyfile dest="build.sh" src="samsung/build.sh" />
</project>
<project name="teamhacksung/android_device_samsung_i9100" path="device/samsung/i9100" remote="github" revision="jellybean" />
<project name="teamhacksung/android_device_samsung_galaxys2-common" path="device/samsung/galaxys2-common" remote="github" revision="jellybean" />
<project name="teamhacksung/android_kernel_samsung_smdk4210" path="kernel/samsung/smdk4210" remote="github" revision="jellybean" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="ics" />
</manifest>
Speichert das ganze ab und beendet den Editor. Jetzt können wir das Skript nutzen um die Sourcen zu laden und machen das wie folgt:

Code:
sudo ./build.sh prepare
Befolgt die Anweisungen des Skripts, welche in englisch sind, und ihr solltet dann in kürzester Zeit alle Sourcen haben, welche wir brauchen um einen Build zu erstellen.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Rush85, nifri, Quaidi und eine weitere Person
Alternativer Weg (Thx @ Das-Ich)

Wer das nicht machen möchte, da das Skript root Rechte benötigt kann auch folgendes machen:

Code:
- mkdir -p ~/bin
- mkdir -p ~/android/system
- curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
- source ~/.profile
- cd ~/android/system/
- repo init -u git://github.com/CyanogenMod/android.git -b jellybean

Wir erstellen jetzt noch die local_manifest.xml
Code:
nano ~/android/system/.repo/local_manifest.xml
mit folgendem Inhalt
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="teamhacksung/buildscripts" path="buildscripts" remote="github" revision="jellybean">
<copyfile dest="build.sh" src="samsung/build.sh" />
</project>
<project name="teamhacksung/android_device_samsung_i9100" path="device/samsung/i9100" remote="github" revision="jellybean" />
<project name="teamhacksung/android_device_samsung_galaxys2-common" path="device/samsung/galaxys2-common" remote="github" revision="jellybean" />
<project name="teamhacksung/android_kernel_samsung_smdk4210" path="kernel/samsung/smdk4210" remote="github" revision="jellybean" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="ics" />
</manifest>
Dann geht es wie folgt weiter:
Code:
- cd ~/android/system/
- repo sync -j16
- build/envsetup.sh
- lunch cm_i9100-userdebug
- cd ~/android/system/device/samsung/i9100/

Jetzt das Handy mit dem PC- verbinden und sicherstellen das adb funktioniert und folgendes Ausführen.
Code:
./proprietary-files.sh

Wenn alles ohne Fehler durchlief, habt ihr eure Bauumgebung erfolgreich aufgebaut.
Dies macht das Skript genauso, wer es halt lieber manuell machen möchte oder genauer wissen möchte was im Hintergrund passiert wählt diesen Weg.
 
Zuletzt bearbeitet:
Compilieren von Android

Nachdem wir unsere Bauumgebung erfolgreich installiert haben, die Quellen alle auf unserem PC sind können wir damit beginnen unser ROM zu bauen. Das ist relativ einfach, wir gehen als erstes in unsere Umgebung:

Code:
cd ~/android/system
Als nächstes können wir einen Sync durchführen. Diesen Sync muss man nicht jedes mal vor dem erstellen seines Builds tätigen, ich empfehle diesen Sync nur dann zu machen, wenn man weiß das die Quellen aktualisiert worden sind.

Code:
repo sync -j16
Jetzt sind unsere Quellen auf dem heimischen PC wieder auf dem neusten Stand der Entwicklung. Wenn wir uns entschließen, am Android System etwas zu ändern, sie es der Kernel oder das entfernen der Lockscreen Vibration sollten wir dies jetzt tun. Haben wir alles zu unserer Zufriedenheit getan können wir los legen das System zu bauen. Das passiert mit dem folgenden Befehl:
Code:
./build.sh i9100

Das Skript vom Teamhacksung übernimmt automatisch alle Schritte, welche Notwendig ist um die Quellen zu bauen. Der Zusatz i9100 den wir dem Skript übergeben haben, weißt das Skript an das ganze Android System inklusive Kernel zu bauen.
Man kann auch, sofern man das möchte, nur den Kernel erstellen lassen:
Code:
./build.sh i9100 kernel
Dadurch wird nur das Bootimage, sprich der Kernel, gebaut und als CWM Zip zur Verfügung gestellt.
Je nachdem was ihr gewählt habt benötigt der PC eine Weile um alles zu bauen. Bei mir braucht das ganze Android zirka 127 Minuten bis der komplett Build erstellt wurde.

Der PC ist jetzt fertig, unsere Zip finden wir unter ~/android/system/out/target/i9100 als flashbare CWM Zip.

An der Stelle sei noch erwähnt, das es auch Möglich ist mit Hilfe dieses Skripts einen Build für andere Geräte zu erstellen. Vorausgesetzt man hat die nötigen Quellen mit eingebunden und übergibt, anstatt i9100, das jeweils richtige Gerät dem Skript. Dies habe ich allerdings nicht getestet und gebe damit keine Garantie auf Richtigkeit.
 
Zuletzt bearbeitet:
Platzhalter
 
Zuletzt bearbeitet:
Changelog

25.08.2012
Alternativer Weg für die Bauumgebung eingepflegt (Thx @ Das-Ich)
Fehlendes Sudo eingefügt bei der Bauumgebung für Ubuntu
Opener aktualisiert

22.08.2012
.repo hinzugefügt.


19.08.2012
XML Informationen eingepflegt.
Changelog eingebaut.
Abschnitt Compilieren aufgebaut.
Opener angepasst.

17.08.2012
Thread erstellt.
Skelett des Threads erstellt.
Informationen für die Bauumgebung eingepflegt.
 
Zuletzt bearbeitet:
Hi

da hab ich gleich mal ne Frage zu. Warum steht in der vorletzten Zeile von local_manifest.xml am Ende ics und nicht jellybean.

Ich werde dann auch mal testen ob ich das hinbekomme, hatte es zwar schon ein paar mal versucht, nur da bekam ich die Fehlermeldung, das es kein Gerät i9100 kennt, sinngemäss.

MfG
 
Da muss ich mich die Tage mal reinlesen. Hab sonst nur an Sammy rumgeschraubt. Aber der AOSP Virus hat mich erwischt.

Sent from SGS II powered by PARANOIDANDROID
 
Du hast in deiner Anleitung etwas vergessen:
Code:
mkdir ~/android/system/.repo

Der Parameter -p ist meiner Meinung nach nicht nötig.
 
Zuletzt bearbeitet:
Das-Ich schrieb:
da hab ich gleich mal ne Frage zu. Warum steht in der vorletzten Zeile von local_manifest.xml am Ende ics und nicht jellybean.

Weil es noch keine jb Version davon gibt.

Füge ich nachher noch ein.

------
Möge die Macht mit dir sein.
Versendet von meinem SGS2
 
Zuletzt bearbeitet:
Wat? Davon gibt's ne jellybean branch.

//tapatalked / i9100 / CMX
 
Nein?

------
Möge die Macht mit dir sein.
Versendet von meinem SGS2
 
Vom der Samsung service mode app?

//tapatalked / i9100 / CMX
 
Hi

@MadMurdoc

ich habe gerade mal diese Alternative versucht, da ich mit dem von Dir beschriebener Anleitung ständig root sein muss und dies finde ich unnötig beim Erstellen eines Builds.

Also als erstes habe ich natürlich alle benötigten Pakete und Software installiert die man für das erstellen des Buildes braucht. Danach habe ich folgende Schritte nacheinander abgearbeitet.

Als erstes besorgt man sich die Sourcen

Code:
- mkdir -p ~/bin
- mkdir -p ~/android/system
- curl [URL]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/URL] > ~/bin/repo
- source ~/.profile
- cd ~/android/system/
- repo init -u [URL]git://github.com/CyanogenMod/android.git[/URL] -b jellybean
- create ~/android/system/.repo/local_manifest.xml 
                [B]Habe dort das eingefügt, was du im ersten Post angegeben hast[/B]
- cd ~/android/system/
- repo sync -j16
- build/envsetup.sh
- lunch cm_i9100-userdebug
- cd ~/android/system/device/samsung/i9100/
- jetzt das Handy mit dem PC- verbinden und sicherstellen das adb funktioniert
- ./proprietary-files.sh
danach kann man dann das Bauen anfangen

Code:
- cd ~/android/system
- repo sync -j16
- ./build.sh i9100
      [B]für ein komplettes build[/B]
- ./build.sh i9100 kernel 
      [B]wenn man nur den Kernel möchte[/B]
Nachzulesen unter CyanogenMod10:How to build - Teamhacksung Wiki in der zweiten Seitenhälfte nach dem Hinweis falls das von Dir beschriebene nicht funktioniert.

MfG
 
Ich schreibe die Anleitung von Teamhacksung mal in Deutsch. Ich muss auch sagen, was auf der ersten Seite als Anleitung steht ist jetzt kompletter Quatsch, weil die Sourcen in die offiziellen Repos gemerged wurden.
 
Wtf?
Wo steht bitte schön das man root sein muss?
 
Hi

das setzt der Befehl ./build.sh prepare voraus, startest du es ohne root zu sein meckert es rum das es nur als root auszuführen sei. Was bei mir dann noch hinzukommt, meine root-Partition ist nur 10GB gross, was dann zu Folge hat das sie volläuft, da man mindest 30GB platzt braucht für die ganzen Daten die beim runterladen und bauen entstehen.

MfG
 
Zuletzt bearbeitet:
Schon mal das Skript angesehen?
Nein oder?

Das Skript braucht root Rechte um Pakete zu installieren, jeder kann das Skript anpassen, sollte jeder hinbekommen der hier schreibt.

Das Skript setzt zum bauen, keine Root Rechte vorraus!
Nur beim Prepare!

@finnq

Kompletter Quatsch?
Sry aber nur weil die Sourcen umgelagert sind ist sicher nicht alles "kompletter Quatsch".
 
@MadMurdoc Mit deiner local_manifest.xml kommst du bald nicht mehr weit. Außerdem brauchst du in die local_manifest.xml nicht mehr so viel von Hand reinzuschreiben. Ein Script erledigt das und das Script setzt die Quellen auch richtig.
 
Hi

doch ich habe reingeschaut, aber ist auch egal, wenn Dir die Alternative nicht zusagt, kannst du ja die Posts von mir wieder löschen, ist dann auch nicht weiter tragisch.

MfG
 

Ähnliche Themen

C
Antworten
4
Aufrufe
9.513
Dickens1412
D
Zurück
Oben Unten