Android und CyanogenMod im Eigenbau - Teil 1

Erstellen Sie Ihre eigene Android-Variante – Aufbau der Entwicklungsumgebung

Sie wollen die volle Kontrolle über Ihr Android-Mobilgerät? Dann erstellen Sie das Betriebssystem doch aus dem frei verfügbaren Quellcode.

Wenn Sie dann noch die Erweiterungen des Custom ROM CyanogenMod (CM) hinzufügen, haben Sie ein leistungsfähiges, offenes System, das Sie nach Belieben anpassen können.

In Teil 1 dieser zweiteiligen Artikelreihe beschreibe ich, wie Sie eine entsprechende Entwicklungsumgebung in einer virtuellen Maschine unter Kubuntu aufbauen.

Einen ausführlichen Artikel zum Thema habe ich in der web & mobile developer 11/2014 veröffentlicht.

Voraussetzungen

Ressourcen

  • Entwickler-PC mit 8 GB RAM, Windows 7 Professional SP 1 64bit oder höher
  • Samsung Galaxy S3 (GT-I9300) mit USB Kabel

Software

Einrichtung einer virtuellen Maschine

Installieren Sie VirtualBox und das Extension Pack (a)

Erstellen Sie eine neue virtuelle Maschine und binden Sie die Kubuntu-ISO-Datei (b) als CD/DVD-Laufwerk (Primärer Master) ein. Es ist wichtig, dass Sie die 64-Bit-Version wählen, denn aktuelle Android-Versionen können nur auf 64-Bit-Systemen erstellt werden. Binden Sie außerdem die VirtualBox-Gasterweiterungen ein (die ISO-Datei befindet sich im Virtual-Box-Programmverzeichnis).

Stellen Sie sicher, dass IO-APIC aktiviert ist. Dies ist Voraussetzung für 64-Bit-Gastsysteme.

Weisen Sie die maximal mögliche Anzahl an CPU-Kernen zu und wählen Sie als Netzwerkadapter Netzwerkbrücke aus, da es sonst bei der CM-Entwicklung zu Problemen mit OpenSSL kommen kann.

Schließen Sie das Smartphone per USB an und fügen Sie den passenden USB-Filter hinzu (Bild 1-1).

Starten Sie die virtuelle Maschine und damit die Kubuntu-Installation.

Installieren Sie die Unterstützung für dynamische Kernelmodule (dkms). Dazu führen Sie in der Konsole folgenden Befehl aus:

sudo apt-get install dkms

Installieren Sie die VirtualBox-Gasterweiterungen (die Werte in Klammern müssen Sie mit Ihren Werten ersetzen):

sudo sh /media/(username)/VBOXADDITIONS_(version)/autorun.sh

Führen Sie einen Neustart aus und aktualisieren Sie alle Kubuntu-Pakete.

Vorbereitung des Smartphones

Installieren Sie ein bereits fertiggestelltes CM auf dem Smartphone. Wie das geht, habe ich im Artikel So schützen Sie Ihr Smartphone vor Datenklau – Teil 1: Installation von CyanogenMod beschrieben. Dieser Schritt ist nötig, weil Sie später Root-Rechte brauchen, um herstellerspezifische Dateien von dem Gerät herunterzukopieren.

Starten Sie das Smartphone.

Tippen Sie unter EinstellungenÜber das Telefon siebenmal auf Build-Nummer.

Aktivieren Sie unter Einstellungen  → Entwickleroptionen den Punkt Aktiv lassen.

Setzen Sie den Eintrag Root-Zugriff auf Apps & ADB und aktivieren Sie den Punkt USB-Debugging.

Vorbereitung der Entwicklungsumgebung

Einige Skripts, die später eingesetzt werden, erwarten als Standard-Konsole die bash-Shell. Da Ubuntu und seine Derivate jedoch per Voreinstellung die dash-Shell benutzen, muss der virtuelle Link sh auf die bash-Shell umgebogen werden:

sudo rm /bin/sh
sudo ln -s bash /bin/sh

Legen Sie die folgenden Verzeichnisse an:

mkdir -p ~/bin
mkdir -p ~/android
mkdir -p ~/android/system

Installieren Sie die Bibliotheken zur Unterstützung von 32-Bit-Komponenten. Beachten Sie, dass hier gemäß der Empfehlung der Ubuntu-Community OpenJDK installiert wird, obwohl für Android offiziell Oracle (Sun) Java benötigt wird. Erfahrungsgemäß gibt es mit OpenJDK keinerlei Probleme.

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

Installieren Sie die Bibliotheken, die zum Erstellen von Android/CM benötigt werden:

sudo apt-get install bison build-essential curl flex g++-multilib gcc-multilib git-core gperf lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev lzop openjdk-7-jdk pngcrush schedtool squashfs-tools xsltproc zlib1g-dev

Entpacken Sie das ADT Bundle (c) nach ~/android. Die resultierende Dateistruktur sehen Sie in Bild 1-2.

Bild 1-2

Fügen Sie zwei Linux-Pfadvariablen hinzu, damit Sie einen bequemen Zugriff auf diverse Tools wie etwa adb haben. Dazu öffnen Sie die Datei environment

sudo nano /etc/environment

…und fügen folgenden Eintrag am Zeilenende (vor dem schließenden Anführungszeichen) ein:

:~/bin:~/android/sdk/platform-tools

Stellen Sie sicher, dass die aktuelle SDK-Plattform und die SDK-Werkzeuge installiert sind. Dazu öffnen Sie den Android SDK Manager unter ~/android/sdk/tools/android (Bild 1-3).

Bild 1-3

Hier können Sie optional auch zusätzliche oder ältere Komponenten hinzufügen. Sollte der Android SDK Manager nicht alle Pakete laden, schauen Sie im Log-Fenster nach. Eine Peer not authenticated-Fehlermeldung deutet auf ein Problem mit der SSL-Verbindung hin.

Als Nächstes installieren Sie repo. Dies ist ein Skript, das im Kontext von Android die Arbeit mit Git erleichtert.

curl http://commondatastorage.googleapis.com/git-repo-downloads/
repo > ~/bin/repo
chmod a+x ~/bin/repo

Setzen Sie in Git Ihre Standardidentität, indem Sie Ihre E-Mail-Adresse angeben:

git config --global user.email "(Email-Adresse)"

Führen Sie einen Neustart aus.

Einrichtung der Entwicklungsumgebung

Stellen Sie sicher, dass Port 9418 für den Zugriff auf GitHub.com offen ist.

Entscheiden Sie sich, auf welchem CM-Zweig (Branch) Sie arbeiten wollen. Die vorhandenen Zweige finden Sie unter CyanogenMod auf github; suchen Sie hier nach der Modellnummer i9300. Empfehlenswert ist das letzte stabile Release, in unserem Beispiel stable/cm-11.0 (Bild 1-4).

Bild 1-4

Navigieren Sie in das system-Verzeichnis…

cd ~/android/system

…und führen Sie den folgenden Befehl aus:

repo init -u git://github.com/CyanogenMod/android.git -b stable/cm-11.0

Beantworten Sie die gestellten Fragen. Anschließend ist das Repository initialisiert.

repo selfupdate

Der Fehler fatal: Invalid gitfile format ist beim ersten Ausführen normal und kann ignoriert werden.

Synchronisieren Sie den Quellcode, was initial mehrere Stunden dauert:

repo sync

Nach erfolgreicher Synchronisierung integrieren Sie die von CM zur Verfügung gestellten Apps:

cd ~/android/system/vendor/cm ./get-prebuilt

Bereiten Sie die Build-Umgebung vor, indem Sie das Skript envsetup im system-Ordner ausführen. Dies erleichtert die anschließende Arbeit, da zusätzliche Befehle zur Verfügung stehen. Das Skript muss allerdings jedes Mal neu ausgeführt werden, wenn Sie ein Konsolen-Fenster öffnen.

cd ~/android/system source build/envsetup.sh

Konfigurieren Sie die Build-Umgebung für das Smartphone-Modell:

breakfast i9300

Starten Sie den adb-Server mit Root-Rechten:

adb root

Die Fehlermeldung device not found können Sie an dieser Stelle ignorieren, da noch kein Gerät angeschlossen ist.

Entsperren Sie das Smartphone und verbinden Sie es per USB mit dem PC. Verbinden Sie das Gerät direkt mit dem Mainboard des PC, nicht über einen USB-Hub.

Das Smartphone fordert Sie an dieser Stelle auf, eine Erlaubnis für die Verbindung zu erteilen (Bild 1-5).

Bild 1-5

Bestätigen Sie den Dialog und testen Sie, ob die Verbindung steht:

adb devices

Bei Erfolg werden eine ID sowie der Begriff device angezeigt (Bild 1-6).

Bild 1-6

Das Gerät benötigt noch einige proprietäre Dateien des Herstellers, die nicht frei erhältlich sind. Extrahieren Sie diese BLOBs wie folgt aus dem Smartphone:

cd ~/android/system/device/samsung/i9300
./extract-files.sh

Nun kann kann das Installationspaket erstellt werden. Aktivieren Sie aber zunächst den Compiler-Cache, damit nachfolgende Builds schneller erfolgen:

cd ~/android/system
export USE_CCACHE=1

Starten Sie den Build-Vorgang. Auch dies dauert mehrere Stunden, insbesondere bei der ersten Ausführung:

brunch i9300

Das fertige Installationspaket finden Sie im Build-Verzeichnis, das Sie über cd $OUT erreichen. Zur Installation kopieren Sie es per adb auf das Smartphone. Ersetzen Sie dabei den Dateinamen durch Ihren eigenen:

adb push ~/android/system/out/target/product/i9300/cm-11-(Datum)-UNOFFICIAL-i9300.zip /sdcard/cm-11-(Datum)-UNOFFICIAL-i9300.zip

Wie Sie das Paket auf dem Smartphone installieren, habe ich im Artikel So schützen Sie Ihr Smartphone vor Datenklau – Teil 1 beschrieben.

Sie finden im Build-Verzeichnis zudem ein Image von ClockWorkMod Recovery (recovery.img).

In Teil 2 dieses Artikels zeige ich, wie Sie das Installationspaket vor dem Build an Ihre Wünsche anpassen.


Artikelreihe "Erstellen Sie Ihre eigene Android-Variante"

Android und CyanogenMod im Eigenbau - Teil 1
Android und CyanogenMod im Eigenbau - Teil 2

Jetzt teilen:

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 3 und 6?

Wir verarbeiten Ihre personenbezogenen Daten, soweit es für die Bereitstellung des Kommentars sowie zur Sicherstellung der Integrität unserer informationstechnischen Systeme erforderlich ist. Sie sind zur Bereitstellung dieser Daten nicht verpflichtet, eine Nutzung der Kommentarfunktion ist ohne die Bereitstellung jedoch nicht möglich. Weitere Hinweise zum Datenschutz finden Sie in der Datenschutzerklärung.