Erstellen Sie Ihre eigene Android-Variante – Aufbau der Entwicklungsumgebung (Android und CyanogenMod im Eigenbau, Teil 1)

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 1)(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 2)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

  1. Oracle VM VirtualBox mit Extension Pack 3)
  2. Kubuntu 64 Bit 4)
  3. Android SDK mit Eclipse (ADT Bundle) 5)für Linux

Einrichtung einer virtuellen Maschine

  1. Installieren Sie VirtualBox und das Extension Pack (a)
  2. 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).
  3. Stellen Sie sicher, dass IO-APIC aktiviert ist. Dies ist Voraussetzung für 64-Bit-Gastsysteme.
  4. 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.
  5. Schließen Sie das Smartphone per USB an und fügen Sie den passenden USB-Filter hinzu (Bild 1-1).Auswahl des USB- Filters für das Smartphone

  6. Starten Sie die virtuelle Maschine und damit die Kubuntu-Installation.
  7. 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
  8. Installieren Sie die VirtualBox-Gasterweiterungen (die Werte in Klammern müssen Sie mit Ihren Werten ersetzen):
    sudo sh /media/(username)/VBOXADDITIONS_(version)/autorun.sh
  9. Führen Sie einen Neustart aus und aktualisieren Sie alle Kubuntu-Pakete.

Vorbereitung des Smartphones

  1. 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.
  2. Starten Sie das Smartphone.
  3. Tippen Sie unter Einstellungen → Über das Telefon siebenmal auf Build-Nummer.
  4. Aktivieren Sie unter Einstellungen  → Entwickleroptionen den Punkt Aktiv lassen.
  5. Setzen Sie den Eintrag Root-Zugriff auf Apps & ADB und aktivieren Sie den Punkt USB-Debugging.

Vorbereitung der Entwicklungsumgebung

  1. 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
  2. Legen Sie die folgenden Verzeichnisse an:
    mkdir -p ~/bin
    mkdir -p ~/android
    mkdir -p ~/android/system
  3. Installieren Sie die Bibliotheken zur Unterstützung von 32-Bit-Komponenten. Beachten Sie, dass hier gemäß der Empfehlung der Ubuntu-Community 6)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
  4. 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
  5. Entpacken Sie das ADT Bundle (c) nach ~/android. Die resultierende Dateistruktur sehen Sie in Bild 1-2.
    Die Dateistruktur nach dem Entpacken des ADT-Bundles
    Bild 1-2

  6. 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
  7. 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).
    Die minimal benötigten Komponenten, dargestellt im Android SDK Manager
    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.

  8. 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
  9. Setzen Sie in Git Ihre Standardidentität, indem Sie Ihre E-Mail-Adresse angeben:
    git config --global user.email "(Email-Adresse)"
  10. Führen Sie einen Neustart aus.

Einrichtung der Entwicklungsumgebung

  1. Stellen Sie sicher, dass Port 9418 für den Zugriff auf GitHub.com offen ist.
  2. 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).
    Auswahl eines CM-Quellcode-Zweiges
    Bild 1-4

  3. 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
  4. Beantworten Sie die gestellten Fragen. Anschließend ist das Repository initialisiert.
  5. Bevor Sie den CM-Quellcode synchronisieren, sollten Sie sicherstellen, dass das repo-Skript aktuell ist:
    repo selfupdate
    Der Fehler fatal: Invalid gitfile format ist beim ersten Ausführen normal und kann ignoriert werden.
  6. Synchronisieren Sie den Quellcode, was initial mehrere Stunden dauert:
    repo sync
  7. Nach erfolgreicher Synchronisierung integrieren Sie die von CM zur Verfügung gestellten Apps:
    cd ~/android/system/vendor/cm ./get-prebuilt
  8. 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
  9. Konfigurieren Sie die Build-Umgebung für das Smartphone-Modell:
    breakfast i9300
  10. 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.
  11. 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.
  12. Das Smartphone fordert Sie an dieser Stelle auf, eine Erlaubnis für die Verbindung zu erteilen (Bild 1-5).
    Sicherheitsabfrage des Smartphones beim ersten Zugriff per USB
    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).

    Die Verbindung zum Smartphone ist hergestellt
    Bild 1-6

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

  14. 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
  15. Starten Sie den Build-Vorgang. Auch dies dauert mehrere Stunden, insbesondere bei der ersten Ausführung:
    brunch i9300
  16. 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
  17. Wie Sie das Paket auf dem Smartphone installieren, habe ich im Artikel So schützen Sie Ihr Smartphone vor Datenklau – Teil 1 beschrieben.
  18. Sie finden im Build-Verzeichnis zudem ein Image von ClockWorkMod Recovery 7)(recovery.img).

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

Links   [ + ]

1. http://www.cyanogenmod.org
2. http://www.webundmobile.de/Aktuelles-Heft/Inhalt-web-mobile-developer-11-2014-10898.html
3. https://www.virtualbox.org/wiki/Downloads
4. http://www.kubuntu.org/getkubuntu
5. http://developer.android.com/sdk
6. http://wiki.ubuntuusers.de/Java/Installation
7. http://www.clockworkmod.com/rommanager

Artikelreihe "Erstellen Sie Ihre eigene Android-Variante"

Erstellen Sie Ihre eigene Android-Variante – Aufbau der Entwicklungsumgebung (Android und CyanogenMod im Eigenbau, Teil 1)
Erstellen Sie Ihre eigene Android-Variante – Anpassung des Installationspakets (Android und CyanogenMod im Eigenbau, Teil 2)

Weitere Links

Oracle VM VirtualBox
Kubuntu
Android SDK

4 Kommentare zu “Erstellen Sie Ihre eigene Android-Variante – Aufbau der Entwicklungsumgebung (Android und CyanogenMod im Eigenbau, Teil 1)

  1. Hallo,

    ist es mit dieser Anleitung möglich mein altes Wtr 0728 mit einem Rockchip RK3026 auf eine aktuelle Android Version zu „updaten“? Ich habe für das Gerät einen Werks-ROM(250Mb).
    Kann man das auch unter Kubuntu 17.04 machen.

    MfG Fred Radloff

        1. Das wird aller Wahrscheinlichkeit nach nicht funktionieren, da Sie das genaue Modell angeben müssen (im Artikel ist dies i9300). Dass das SoC ähnlich ist, reicht nicht aus.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.