Bearbeiten von „CustomROM kompilieren

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
Einer der wichtigsten Pluspunkte von Android ist die Quelloffenheit. Durch die Lizenzierung unter der Apache Lizenz 2.0<ref>{{Internetquelle|titel = Licenses {{!}} Android Open Source Project|url = http://source.android.com/source/licenses.html|zugriff = 2015-12-01|werk = source.android.com}}</ref> und der öffentlichen Verfügbarkeit des Quellcodes, ist es grundsätzlich jedem erlaubt, sein eigenes Android-System zu erstellen, zu verändern und zu veröffentlichen. Daraus sind einige bekannte CustomROMs entstanden, bspw. den CyanogenMod. Das '''Kompilieren einer ROM''' ist grundsätzlich kein Hexenwerk, erfordert allerdings Zeit und Interesse, die investiert werden sollte, um auch die Hintergründe und Funktionsweisen zu verstehen. Diese Seite dient lediglich als kurze Schritt-für-Schritt-Hilfe.<ref>{{Internetquelle|titel = Custom ROM kompilieren|url = http://www.handy-faq.de/forum/custom-rom-kompilieren-t318233/|zugriff = 2015-12-01|sprache = de-DE|werk = Handy-FAQ.de}}</ref>
== Anforderungen zum Kompilieren ==
 
== System-Anforderungen ==


* PC oder Laptop mit mindestens 4GB RAM
* PC oder Laptop mit mindestens 4GB RAM
* Mindestens 100GB Speicherplatz
* Mindestens 100GB Speicherplatz
* 64-Bit Linux oder Mac OS
* 64-Bit Linux oder Mac


== Vorbereitungen ==
== Vorbereitungen zum Kompilieren ==


Zum Kompilieren werden einige Tools benötigt, die in einem [[Linux]]-Derivat (bspw. Ubuntu) in der Regel in den vorinstallierten Paketquellen zu finden sind. Diese können bspw. mit diesem Befehl installiert werden, welcher in der Kommandozeile ausgeführt werden muss. Der aktuell angemeldete Nutzer muss selbstredend ein Nutzer sein, der berechtigt ist, Befehle als Root-User mit <code>[[Wikipedia:de:Sudo|sudo]]</code> sein.<syntaxhighlight lang="bash">
Zum Kompilieren werden einige Tools benötigt, die in einem Linux-Derivat (bspw. Ubuntu) in der Regel in den vorinstallierten Paketquellen zu finden sind. Diese können bspw. mit diesem Befehl installiert werden, welcher in der Kommandozeile ausgeführt werden muss. Der aktuell angemeldete Nutzer muss selbstredend ein Nutzer sein, der berechtigt ist, Befehle als Root-User mit <code>[[Wikipedia:de:Sudo|sudo]]</code> sein.<syntaxhighlight lang="bash">
sudo apt-get install git-core gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python git
sudo apt-get install git-core gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python git
</syntaxhighlight>Für die Quellcode-Verwaltung von [[Android]] wird eine eigens entwickelte Anwendung, mit dem Namen ''[[repo]]'', entwickelt, die die Verwaltung der verschiedenen Git-Repositories erleichtert. Die Anwendung basiert auf ''git'', dessen Client bereits mit dem obigen Befehl installiert wurde.<ref>{{Internetquelle|titel = <nowiki>git-repo -
</syntaxhighlight>Für die Quellcode-Verwaltung von Android wird eine eigens entwickelte Anwendung, mit dem Namen ''repo'', entwickelt, die die Verwaltung der verschiedenen Git-Repositories erleichtert. Die Anwendung basiert auf ''git'', dessen Client bereits mit dem obigen Befehl installiert wurde.<ref>{{Internetquelle|titel = <nowiki>git-repo -
   
   
   
   
Zeile 26: Zeile 24:


== Quellcode herunterladen ==
== Quellcode herunterladen ==
Der Quellcode der zu kompilierenden [[CustomROM]] muss nun lokal heruntergeladen und gespeichert werden. Idealerweise wird hierfür ein entsprechender Ordner mit dem Namen des CustomROM im Heimverzeichnis des Nutzers erstellt und in diesen wechselt. Für [[CyanogenMod]] bspw.:<syntaxhighlight lang="bash">
Der Quellcode der zu kompilierenden CustomROM muss nun lokal heruntergeladen und gespeichert werden. Idealerweise wird hierfür ein entsprechender Ordner mit dem Namen des CustomROM im Heimverzeichnis des Nutzers erstellt und in diesen wechselt. Für CyanogenMod bspw.:<syntaxhighlight lang="bash">
$ mkdir ~/CyanogenMod && cd ~/CyanogenMod
$ mkdir ~/CyanogenMod && cd ~/CyanogenMod
</syntaxhighlight>Der Quellcode selbst wird mit Hilfe vom eben installierten Tool ''repo'' heruntergeladen und vorbereitet. Hierfür genügt es, den entsprechend richtigen Befehl der folgenden Tabelle (jeweils für Android {{Android|5.1}}im Terminal (im entsprechenden Ordner im Heimverzeichnis) auszuführen, um das Repository zu initialisieren:
</syntaxhighlight>Der Quellcode selbst wird mit Hilfe vom eben installierten Tool ''repo'' heruntergeladen und vorbereitet. Hierfür genügt es, den entsprechend richtigen Befehl der folgenden Tabelle (jeweils für Android {{Android|5.1}}im Terminal (im entsprechenden Ordner im Heimverzeichnis) auszuführen, um das Repository zu initialisieren:
{| class="wikitable"
{| class="wikitable"
!Custom-ROM
!CustomROM
!Befehl für das Terminal
!Befehl für das Terminal
|-
|-
|CyanogenMod
|CyanogenMod
|repo init -u <nowiki>git://github.com/CyanogenMod/android.git</nowiki> -b cm-14.1
|<nowiki>repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1</nowiki>
|-
|-
|BlissPop
|BlissPop
Zeile 41: Zeile 39:
|Resurrection
|Resurrection
|<nowiki>repo init -u https://github.com/ResurrectionRemix/platform_manifest.git -b lollipop5.1</nowiki>
|<nowiki>repo init -u https://github.com/ResurrectionRemix/platform_manifest.git -b lollipop5.1</nowiki>
|-
|LineageOS (Nachfolger von CyanogenMod)
|repo init -u <nowiki>git://github.com/LineageOS/android.git</nowiki> -b cm-14.1
|}
|}


Zeile 51: Zeile 46:


Nahezu jedes Gerät erfordert, neben den Quellcode-Repositories, die in der sog. ''default manifest'' genannt sind, noch weitere, gerätespezifische Daten aus anderen Repositories um auf diesem speziellen Gerät problemlos zu funktionieren. Diese Abhängigkeiten können in einer sogenannten '''local manifest''' Datei hinterlegt werden, die beim Synchronisieren mit ''repo'' ebenfalls heruntergeladen werden. Die gerätespezifische ''[https://wiki.cyanogenmod.org/w/Doc:_Using_manifests local_manifest.xml]'' kann i.d.R. durch eine kurze Google-Suche gefunden werden. Diese muss anschließend in ein neu zu erstellendes Verzeichnis ''local_manifests'' im ''.repo'' Verzeichnis des Repositories kopiert werden. Ist die ''local_manifest.xml'' für das entsprechende Gerät im Heimverzeichnis gespeichert, kann dieses bspw. mit diesen Befehlen an die korrekte Stelle kopiert werden (der erste Befehl ist ein Beispiel-Befehl für das Herunterladen einer Manifest-Datei und kann, sofern die local_manifest bereits existiert, ignoriert werden):<syntaxhighlight lang="bash">
Nahezu jedes Gerät erfordert, neben den Quellcode-Repositories, die in der sog. ''default manifest'' genannt sind, noch weitere, gerätespezifische Daten aus anderen Repositories um auf diesem speziellen Gerät problemlos zu funktionieren. Diese Abhängigkeiten können in einer sogenannten '''local manifest''' Datei hinterlegt werden, die beim Synchronisieren mit ''repo'' ebenfalls heruntergeladen werden. Die gerätespezifische ''[https://wiki.cyanogenmod.org/w/Doc:_Using_manifests local_manifest.xml]'' kann i.d.R. durch eine kurze Google-Suche gefunden werden. Diese muss anschließend in ein neu zu erstellendes Verzeichnis ''local_manifests'' im ''.repo'' Verzeichnis des Repositories kopiert werden. Ist die ''local_manifest.xml'' für das entsprechende Gerät im Heimverzeichnis gespeichert, kann dieses bspw. mit diesen Befehlen an die korrekte Stelle kopiert werden (der erste Befehl ist ein Beispiel-Befehl für das Herunterladen einer Manifest-Datei und kann, sofern die local_manifest bereits existiert, ignoriert werden):<syntaxhighlight lang="bash">
$ wget -O ~/local_manifest.xml https://raw.github.com/bruce2728/local_manifest/kitkat-mr0/bruce2728_manifest.xml
$wget -O ~/local_manifest.xml https://raw.github.com/bruce2728/local_manifest/kitkat-mr0/bruce2728_manifest.xml
$ cd .repo && mkdir local_manifests && cd local_manifests && cp ~/local_manifest.xml ./
$ cd .repo && mkdir local_manifests && cd local_manifests && cp ~/local_manifest.xml ./
</syntaxhighlight>Durch das erneute Synchronisieren der Repositories werden auch die in der ''local_manifest.xml'' genannten Abhängigkeiten heruntergeladen:<syntaxhighlight lang="bash">
</syntaxhighlight>Durch das erneute Synchronisieren der Repositories werden auch die in der ''local_manifest.xml'' genannten Abhängigkeiten heruntergeladen:<syntaxhighlight lang="bash">
Zeile 64: Zeile 59:
$ breakfast {GERÄTENAME}
$ breakfast {GERÄTENAME}
// Build starten
// Build starten
$ brunch {GERÄTENAME}
$ bunch {GERÄTENAME}
</syntaxhighlight>
 
Um eine weitere CustomROM aus dem Quellcode fehlerfrei zu kompilieren ist es wichtig, diese Befehle im Terminal auszuführen.
<syntaxhighlight lang="bash">
// In das CustomROM Verzeichnis wechseln
$ cd ~/CyanogenMod
// "Output" Ordner löschen
$ make clobber
// Quell-Code auffrischen, durch diverse Änderungen des Quellcodes.
$ Repo sync -j4
// Build vorbereiten
$ . build/envsetup.sh
// Build starten - {GEARÄTENAME} ist der Name des Gerätes, ohne {}
$ brunch {GERÄTENAME}
</syntaxhighlight>
</syntaxhighlight>


== Einzelnachweise ==
== Einzelnachweise ==
<references />
<references />
Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Android Wiki-Beiträge automatisch unter der „Creative Commons Attribution/Share-Alike Lizenz 3.0“ stehen. Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)