[Tutorial] Einsteiger-Wissen über Android

  • 27 Antworten
  • Letztes Antwortdatum
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
OS Entwicklung

Um am Android OS zu entwickeln, empfehle ich eines der vorhanden Open-Source Projekte als Basis zu verwenden. Außerdem benötigt man gewisse Voraussetzungen an seinem PC:

Voraussetzungen:

Die Android OS Entwicklung stellt gewisse Anforderungen sowohl an den Entwickler als auch an die zur Verfügung stehende Hardware.

Vorkenntnisse:

Es ist eine Grund-Voraussetzung, dass man Linux, Linux-Shell-Scripte, Makefile-Syntax, Android-Mk-Syntax, C, C++ und Java beherrscht.

Hardware:
Man benötigt ein Linux-System, am besten Ubuntu 12 oder höher. Um mit Build erfolgreich sein zu können, muss man auf dem Computer mindestens 40 GB freien Plattenplatz haben. Der Rechner sollte 8GB Ram und eine angemessene CPU haben (DualCore mit 2 GHz minimum)

Im den weiteren Unterkapiteln werde ich folgende Themen behandeln:



Zurück zum Start-Beitrag
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Buildumgebung und Sourcen

Die folgenden beiden Schritte sind als Vorbereitung zu verstehen.

Einrichten der Buildumgebung

Dazu gibt es eine ganz brauchbare Anleitung hier: Downloading and Building | Android Developers

Wenn ich gelegenheit finde, werde ich das auf Deutsch übersetzen.

Download der Sourcen

Das macht man mit repo. Dazu erstellt man sich ein 'Arbeitsverzeichs' und startet in dem ein Terminal-Fenster. Dort das repo 'Initalisieren':

Für AOSP: repo init -u git://android.googlesource.com/platform/manifest.git
Für CM 10.1: repo init -u git://github.com/CyanogenMod/android.git
Für AOKP: repo init -u git://github.com/AOKP/platform_manifest.git
Für PA: repo init -u git://github.com/ParanoidAndroid/android.git

Danach repo sync

Dann warten bis alles runtergeladen ist. Da das echt viel (~15 GB!!) ist, kann dass mehrere Stunden dauern...

Zurück zu OS Entwicklung
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Builden und Testen

Der eigentliche Schritt, ein neues Android OS zu bauen, besteht aus dem Builden und anschließend das Ergebnis testen.

Starten eines Builds

Zuerst muss man mal das Build-Environment initialisieren:

. build/envsetup.sh

Danach ist es je nach ROM unterschiedlich. Den Text <code-name> durch den oben vergebenen Code-Name des Devices ersetzten. Beim ersten Build empfiehlt es sich, einen Devices zu bauen, für den es schon eine Bestehende Portierung gibt.

AOSP:
lunch full-<code-name>
make -j4

CM10.1 und AOKP:
brunch <code-name>

PA:
rom-build.sh <code-name>

Testen des Build Ergebnis

Das Ergebniss des Builds wird ein CWM-installierbares ZIP sein und liegt unter out/target/product/<code-name>/... Das erstellte ZIP auf das Tablet kopieren und ins CWM booten und installieren. Hier empfieht sich ein Wipe-Data, da das neu erstellte ROM sicher nicht mit den App-Daten des bisherigen ROMs kompatible ist.

Bei AOSP wird kein CWM-Installierbares ZIP erstellt. Das Ergebnis des Builds muss man von Hand in ein solches verwandeln.


Zurück zu OS Entwicklung
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Eine eigene Portierung

Um einen eigenen Port zu erstellen, muss man einen sogenannten Device-Tree erstellen. Im Device-Tree sind alle Dinge drin, die nur für dieses eine Geräte benötigt werde.

Device-Tree anlegen:

Jetzt wird es lustig... Dazu muss man sich Beispiele (von ähnlichen Geräten, am besten mit ähnlicher Hardware und vom gleichen Hersteller) angucken und viiieel googlen.

Ein paar gute Links:

Porting Android to Devices | Android Developers
How To Port CyanogenMod Android To Your Own Device - CyanogenMod
Adding device support to PA, & Building ROM

Beim Anlegen des Device-Trees verwendet man den Code-Name des Devices. Den hat der Hersteller des Gerätes vergeben. Dieser wird in den weiteren Schritten zum starten des Builds benötigt.

Ich gehe hier nicht weiter darauf ein, wie man einen Device-Tree erstellt, denn:

  • Es ist hochgradig Geräte-Abhängig.
  • Sehr umfangreich und würde den Rahmen eines Überblicks sprengen.
  • Es hat viel mit 'Stochern im Trüben' zu tun...

Zurück zu OS Entwicklung
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Fehlerbehandlung

Wenn es zu Build-Abbrüchen kommt: Genereller Tipp, wenn es zu Fehlern während des Builds kommt, ist es ratsam, nur den ersten Fehler zu behandeln, denn die anderen Fehler sind oft nur Folgefehler. Sich um die zu kümmern, verschwendet Energie und ist oft nach der Behandlung des ersten Fehlers unnötig.

Wenn der Build durchgelaufen ist, und man das Ergebnis auf dem Device installiert hat, bieten sich folgende Möglichkeiten an:

Logcat:

Das Logcat ist das Android-Log-System. Die meisten System-Komponenten schreiben ihre Meldung dort hinein.

Besser als das Logcat auf dem Gerät zu bertrachten, ist die Ausgabe des Logcat vom PC aus in eine Datei zu leiten.

Dies kann man mit Hilfe von ADB:

Code:
adb logcat > logcat.txt

Schreibt das Logcat in eine Datei im CurrentWorkDirectory.

Tipp: Das Logcat hat verschiedene Buffer, beispielsweise einen für den 'Radio-Device' (Mobil-Funk)

Einen alternativen Buffer (z.B. radio) liest man mit:

Code:
logcat -b radio

Kernel-Messages:

Was nicht im Logcat steht, sind die Meldungen des Kernels. Diese kann man sich angucken, indem man die Datei /proc/kmsg ausliest.

Besser als das K-Messages auf dem Gerät zu betrachten, ist die Ausgabe der K-Messages vom PC aus in eine Datei zu leiten.

Dies kann man mit Hilfe von ADB:

Code:
adb shell cat /porc/kmsg > kmsg.txt

Schreibt die K-Messages in eine Datei im CurrentWorkDirectory.

Zurück zu OS Entwicklung
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: bartx, hansichen und Simon G.
Abschließender Hinweis

Diese Beschreibung kann nicht jedes Gerät beschreiben, denn man hat als OS-Entwickler sehr viele Freiheiten, Details anders zu implementieren.

Ich habe hier die gängiste Art der Implementierung beschrieben, die nach meinem Kenntnisstand am dichtesten an AOSP liegt.

Ich jedoch bitte um Verständnis, dass es sicher viele Beispiele gibt, in denen etwas anders geregelt ist, als hier.

Zurück zum Start-Beitrag
 
Zuletzt bearbeitet:
Ich habe mal die Links zwischen den einzelnen Beiträgen aufgefrischt, die sind bei dem 'Server-Umzug' leider verloren gegangen.
 
  • Danke
Reaktionen: bartx, seppboro und __W__

Ähnliche Themen

harvey186
  • harvey186
Antworten
1
Aufrufe
1.184
harvey186
harvey186
H
  • Hyundaicarlo
Antworten
1
Aufrufe
1.164
yessir99
Y
Eifelexil
  • Eifelexil
Antworten
4
Aufrufe
1.753
Eifelexil
Eifelexil
Zurück
Oben Unten