Zum Inhalt springen

CustomROM kompilieren: Unterschied zwischen den Versionen

1.619 Bytes hinzugefügt ,  16. Januar 2017
→‎Quellcode herunterladen: Update für LineageOS
K (Florian verschob die Seite Custom ROM kompilieren nach CustomROM kompilieren: CustomROM, nicht Custom ROM :))
(→‎Quellcode herunterladen: Update für LineageOS)
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Anforderungen zum Kompilieren ==
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>
 
== 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
* 64-Bit Linux oder Mac OS


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


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 24: Zeile 26:


== 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"
!CustomROM
!Custom-ROM
!Befehl für das Terminal
!Befehl für das Terminal
|-
|-
|CyanogenMod
|CyanogenMod
|<nowiki>repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1</nowiki>
|repo init -u <nowiki>git://github.com/CyanogenMod/android.git</nowiki> -b cm-14.1
|-
|-
|BlissPop
|BlissPop
Zeile 39: Zeile 41:
|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 46: Zeile 51:


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 59: Zeile 64:
$ breakfast {GERÄTENAME}
$ breakfast {GERÄTENAME}
// Build starten
// Build starten
$ bunch {GERÄTENAME}
$ brunch {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 />
Anonymer Benutzer
Cookies helfen uns bei der Bereitstellung von Android Wiki. Durch die Nutzung von Android Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.