CustomROM kompilieren: Unterschied zwischen den Versionen

Aus Android Wiki
(Bearbeitet.)
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung Visuelle Bearbeitung
Zeile 30: Zeile 30:
</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-ROMs
!Custom-ROM
!Befehl für das Terminal
!Befehl für das Terminal
|-
|-
Zeile 64: Zeile 64:
</syntaxhighlight>
</syntaxhighlight>


Um eine weitere "CustomROM" aus der Source Fehlerfrei zu Kompilieren ist es wichtig, diese Befehle im Terminal auszuführen.
Um eine weitere CustomROM aus dem Quellcode fehlerfrei zu kompilieren ist es wichtig, diese Befehle im Terminal auszuführen.
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
// In das CustomROM Verzeichnis wechseln
// In das CustomROM Verzeichnis wechseln

Version vom 6. Dezember 2015, 01:09 Uhr

Einer der wichtigsten Pluspunkte von Android ist die Quelloffenheit. Durch die Lizenzierung unter der Apache Lizenz 2.0[1] 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.[2]

System-Anforderungen

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

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 sudo sein.

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

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.[3] Es wird empfohlen, repo im Heimverzeichnis des Benutzers zu installieren. Hierfür muss sichergestellt sein, dass ein bin-Verzeichnis vorhanden und in der PATH-Umgebungsvariable hinterlegt ist, in welches repo anschließend installiert wird. Die folgenden Befehle müssen einfach Zeile für Zeile in der Kommandozeile ausgeführt werden, Zeilen, welche mit // starten, sind Kommentare:

// bin-Verzeichnis im Heimverzeichnis erstellen
$ mkdir ~/bin
// und zur PATH-Umgebungsvariable hinzufügen
$ PATH=~/bin:$PATH
// repo in das gerade erstellte bin-Verzeichnis herunterladen
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
// Rechte für repo setzen: a -> alle Gruppen/Nutzer; x -> ausführbar
$ chmod a+x ~/bin/repo

Anschließend steht der Befehl repo für den angemeldeten Nutzer global zur Verfügung.

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.:

$ mkdir ~/CyanogenMod && cd ~/CyanogenMod

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 5.1 Lollipop "Lollipop"im Terminal (im entsprechenden Ordner im Heimverzeichnis) auszuführen, um das Repository zu initialisieren:

Custom-ROM Befehl für das Terminal
CyanogenMod repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
BlissPop repo init -u https://github.com/TeamBliss-LP/android.git -b lp5.1
Resurrection repo init -u https://github.com/ResurrectionRemix/platform_manifest.git -b lollipop5.1

Um den Quellcode nun herunter zu laden, muss das Repository mit synchronisiert werden. In der Kommandozeile geschieht das durch den Befehl

$ repo sync -j18

Das Herunterladen kann je nach CustomROM und verfügbarer Internetverbindung einige Zeit in Anspruch nehmen. 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 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):

$ 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 ./

Durch das erneute Synchronisieren der Repositories werden auch die in der local_manifest.xml genannten Abhängigkeiten heruntergeladen:

$ repo sync

Kompilieren der ROM

Das Kompilieren der ROM kann durch folgende Befehle vorbereitet und gestartet werden. Auch hier gilt: Die Zeit, die dies in Anspruch nimmt, hängt grundsätzlich von der Größe der ROM, sowie der zur Verfügung stehenden Rechenleistung ab.

// Build vorbereiten
$ . build/envsetup.sh
// {GEARÄTENAME} ist der Name des Gerätes, ohne {}
$ breakfast {GERÄTENAME}
// Build starten
$ brunch {GERÄTENAME}

Um eine weitere CustomROM aus dem Quellcode fehlerfrei zu kompilieren ist es wichtig, diese Befehle im Terminal auszuführen.

// 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}

Einzelnachweise

  1. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-12-01.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  2. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-12-01 (de-de).Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  3. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-12-01.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.