[Tutorial] Einsteiger-Wissen über Android

Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
32.707
Einsteiger-Wissen über Android

Vorwort

Ich möchte hier ein Tutorial anbieten, in dem alles, was man über das Android-System wissen sollte, in einem Tutorial zusammengefasst ist.

Dieser Anspruch ist leider nicht wirklich erfüllbar! Da diverse Hersteller weit von der Standard-Implementierung von Android abweichen, kann ein Tutorial alleine diesem Anspruch nicht gerecht werden. Ich werde mich daher in diesem Tutorial allein auf die Android-Standards beziehen, um ein bestimmtes Gerät zu kennen, muss man sich zusätzlich noch mit den Eigenarten dieses Gerätes beschäftigen.

Ich hoffe dennoch, dem Android-Einsteiger (was ich vor weniger als einem Jahr selbst noch war) ein solides Basis-Wissen vermitteln zu können.

Dieses Tutorial ist so geschrieben, dass man es entweder 'in einem Rutsch' durchlesen kann, oder über das Inhaltsverzeichnis zu dem Punkt, den man wissen möchte, hin navigieren kann.

Inhalt

Weitere Details zum Thema Aufbau des Android-Systems gibt es hier:

[TUT] Der Aufbau des Android Systems

Ich hoffe, das Studium dieses Tutorials hat den Lesern soviel Spaß gemacht, wie mir das Schreiben des selben.

Mit freundlichen Grüßen

Uwe
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Nick Knight, bartx, fax666 und 21 andere
Das Android OS

Das Android OS ist ein Linux basiertes Operating-System das speziell für Mobile Geräte entwickelt wurde.

Von Linux hat das Andoid-System seine Basis Achitektur geerbt. Dazu gehören die folgenden Komponenten, auf die ich in späteren Kapiteln genauer eingehen werde:

Der Kernel
Das Datei-System
Das Berechtigungs-System

Des weiteren hat Android viele Komponenten, die für Linux entwickelt wurden, um dort wichtige Dienste zu leisten, übernommen, da die gleichen Dienste im Android-System benötigt werden.

Zusätzlich hat Android eine eigene Schicht mitgebracht, die Java-Schicht. Diese besteht aus einem Prozess (1) namens Zygote, der für jede App, die gestartet werden soll, einen eigenen Sub-Prozess (2) mit einer eigenen Dalvik-VM (3) startet.

(1) Ein Prozess ist eine bestimmte Aufgabe in einem Computer (oder mobilen Gerät) die ausführbaren Code beinhaltet, einen eigenen Anteil an Speicher und Rechenleistung des System zugewiesen bekommt. Beispiele für Prozesse sind Dienste und Anwendungen.

(2) Ein Sub-Prozess ist ein von einem Übergeordneten Prozess gestarteter Prozess, der eine bestimmte Aufgabe übernimmt und diese selbständig erledigt. wie ein Prozess verfügt ein Sub-Prozess über eigenen Anteil an Speicher und Rechenleistung.

(3) Die Dalvik-VM (VM steht für Virtuelle Maschine) ist eine Software, die einem Android-Java-Programm die Umgebung zur Verfügung stellt, die dieses benötigt, um ausgeführt werden zu können. Da nicht alle Android-Systeme die gleiche Hardware haben, aber die Android-Apps auf allen Android-System laufen sollen, stellt die Dalvik-VM den Apps eine einheitliche virtuelle Umgebung zur Verfügung, um die Hardware-Unterschiede auszugleichen.​

Um tiefer in das Android-System einzusteigen, benötigen man nun noch etwas Grundwissen. Darüber spreche ich in den nächsten Kapiteln:




Zurück zum Start-Beitrag
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Hardware

Die Hardware eines mobilen Gerätes unterscheidet sich in ihrer Grundsätzlichen Struktur nicht wirklich von der eines klassichen Computers.

Es gibt folgende Komponenten:

Der Arbeits-Speicher
Der Prozessor
Der Massen-Speicher (persistent)
Die IO-Komponenten
Der Bus

Der Arbeits-Speicher:

Den Arbeitsspeicher (RAM genannt) kann man sich als eine lange Kette von Kästchen vorstellen, von denen jedes Kästchen eine feste Nummer hat, beginnend mit 0, dann kommt 1, 2,... usw. Diese Nummer nennt man seine Adresse. Jedes Kästchen hat die Fähigkeit, dass man eine Zahl zwischen 0 und 255 darin speichern kann, oder später auch wieder auslesen kann. Der Zugriff auf den Arbeitsspeicher ist deutlich schneller als der Zugriff auf den Massen-Speicher, allerdings bleibt der Inhalt des Arbeits-Speichers nicht nach dem Ausschalten des Gerätes erhalten.

Der Prozessor:

Der Prozessor ist der 'Denkende Kern' des Systems. Es ist eine Komponente, die bestimmte Befehle verstehen kann und diese ausführt.

Wie funktioniert der Prozessor im groben: (Nur für Interessierte, muss nicht jeder lesen)
  • Es gibt im Prozessor einige Register, das sind kleine Speichereinheiten die eine Zahl beinhalten können, deren Inhalt ausgelesen beziehungsweise neu beschrieben werden kann.
  • Eines dieser Register ist der sogenannte Program-Counter. Der Inhalt dieses Registers wird als 'Speicheradresse' im Arbeits-Speicher (siehe oben) interpretiert. Der Inhalt des Arbeits-Speichers an dieser Adresse wird ausgelesen und als 'Befehl' an den Prozessor interpretiert und ausgeführt. Dann wird der Inhalt des Proram-Counters um eins erhöht und der nächste Befehl wird aus dem Arbeits-Speicher geholt und ausgeführt. Dies geschieht in der Regel immer während eines Takt-Zyklus (Dafür gibt es eine Komponente, die in regelmäßigen Zeitabständen einen Takt gibt, das der Prozessor den nächsten Befehl ausführt).
  • Die Befehle die der Prozessor ausführen kann sind im wesentlichen folgende:
    1. Ein Register mit dem dem Inhalt einer Speicherzelle des Arbeits-Speichers laden, oder den Inhalt des Registers in eine Speicherzelle des Arbeitsspeichers wegschreiben. Welche Speicherzelle des Arbeitsspeichers gemeint ist, kann dabei entweder durch den Inhalt eines anderen Registers festgelegt sein (das nennt man 'Indirekte Adressierung'), oder mit in dem Befehl angegeben sein (das nennt man 'Absolute Adressierung') oder es kann auch direkt der Wert angegeben sein, der in das Register soll (das nennt man 'Imidiate').
    2. Zwei Register mit einander verknüpfen (Addieren, Multiplizieren...) und das Ergebnis in ein drittes Register wegspeichern. (Es gibt auch die Möglichkeit, auf das Speichern in ein Register zu verzichten, was beispielsweise Sinn macht, wenn man nur zwei Register mit eineander vergleichen möchte).
    3. Zusätzlich gibt es noch die Sprung-Befehle. Die werden benötigt, wenn die Ausführung der einzelnen Befehle, die im Arbeitsspeicher stehen, nicht 'Einer nach dem Anderen' stattfinden soll (Wie bei einem Flussdiagramm wo der Ablaufpfeil von jedem Kästchen direkt auf sein Nachfolge-Kästchen zeigt, sondern der Ablauf-Plan auch mal zu einer anderen Kästchen-Gruppe deutet). Dazu kann als Befehl der Program-Counter verändert werden. Der nächste auszuführende Befehl wird dann aus der neuen Adresse, die im Program-Counter steht, geholt. Dieses nennt man eine 'Sprunganweisung'.
    4. Eine besondere Variante stellt dabei das Überschreiben des Program-Counters dar, wenn der bisherige Inhalt des Program-Counters gesichert wird, damit nach der Abarbeitung eines bestimmten Blocks von Anweisungen an die Stelle zurückgesprungen werden kann, wo dieser Anweisungsblock aufgerufen wurde. Dies nennt man eine 'Sub-Routine'.
    5. Als letzte Art von Anweisung möchte ich noch die Bedingten Anweisungen aufführen. Diese werden nur dann ausgeführt, wenn bestimmte Bedingungen erfüllt sind. Dies kann sein, das eine vorhergehende Anweisung, die den Inhalt zweier Register mit einander verglichen hat und Gleichheit oder Unterschied (größer, kleiner) festgestellt wurde. Bedingte Anweisungen sind oft Sprunganweisungen, um Im Fall des Zutreffens der Bedingung anderer Code als im Fall des Nichtzutreffens auszuführen.
  • Ergänzend sei noch anzumerken, dass ARM Prozessoren eigentlich mit den ersten beiden Arten von Befehlen auskommen, da sie Sprunganweisungen dadurch realisieren, dass der Program-Counter eines der Internen Register ist und Sprünge durch Schreiben in den Program-Counter mit Befehlen der Art 1 oder 2 erledigt werden, und dass jeder einzelne Befehl bedingt ausgeführt werden kann.

Der Massen-Speicher:

Der Massen-Speicher kann durch Festplatten oder (im Fall von Mobilen Geräten bevorzugt) durch Flash-Speicher realisiert werden. Auch dieser Speicher kann als Kette von Kästchen mit fortlaufenden Adressen gesehen werden (im Fall einer Festplatte ein wenig komplizierter, da diese noch in Unterbereiche (Zylinder, Sektoren, Köpfe) aufgeteilt ist, aber im Endeffekt spielt das keine Rolle). Es gibt aber folgende Unterschiede:
Eine physikalisch vorhandene Massen-Speicher Einheit kann in verschiedene Logische Einheiten aufgeteilt sein. Dies nennt man Partitionen (Teilweise können auch mehrere logische Einheiten auch wieder zu einer neuen Logischen Einheit zusammengefasst werden).
Der Prozessor kann nicht direkt in den Massen-Speicher hinein zugreifen, sondern macht dies über weitere Hardware-Komponenten.

Der Zugriff auf den Massenspeicher ist nicht so schnell wie der Zugriff auf den Arbeitsspeicher, dafür bleiben die Inhalte des Massen-Speichers nach dem Ausschalten des Gerätes erhalten.

Eine Partition kann entweder ein Datei-System enthalten (siehe Kapitel Datei-System) oder als Speicher für ein Image (einen großen Daten-Block) dienen.

Die IO-Komponenten:

Das sind unter anderem das Display und der Touch-Sensor, aber letztlich kann man auch die Hardware-Treiber zum Zugriff auf Massenspeicher, Netzwerk-Adapter, weitere Sensoren und Tasten uvam. dazu zählen.

Diese Komponenten werden auch nicht vom Prozessor direkt adressiert, sondern haben bestimmte Kommunikationswege, mit denen auf sie zugegriffen werden kann.

Der Bus:

Als einen Bus bezeichnet man die System-Komponenten, die für die Verbindung zwischen den anderen Komponenten zuständig sind. In der klassischen Computer-Architektur gab es zwischen Prozessor und Arbeits-Speicher zwei Busse, den Adress- und den Daten-Bus, sowie die Read-Write-Leitung. Wollte der Prozessor eine bestimmte Zelle des Arbeitsspeichers zugreifen, wurde die Adresse der Speicherzelle vom Prozessor über den Adress-Bus geleitet. Wenn der Prozessor lesen, hat er die R-W-Leitung auf Lesen gesetzt. daraufhin hat der Speicher den Inhalt der Speicherzelle über den Daten-Bus an den Prozessor geschickt. Wollte der Prozessor dagegen in die Speicherzelle schreiben, hat er die R-W-Leitung auf Schreiben gesetzt und den zu schreibenden Inhalt über den Daten-Bus an den Speicher gesendet.

Zurück zu Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Das Datei-System

Das Datei-System ist einer der wichtigsten Bestandteile des Linux-Systems (Wobei Linux das von vorhergehenden System wie Unix bzw. Posix übernommen hat)

Der Verzeichnis-Baum:
Das Linux Datei-System ist wie ein Baum aufgebaut. Unten gibt es eine Wurzel, das Root-Verzeichnis (Root: englisch Wurzel). Dieses wird mit dem Symbol / dargestellt.

Darin befinden sich Unterverzeichnisse, im Falle von Andoid die Verzeichnisse /system/ und /data/ und weitere sowie 'logische' Verzeichnisse /dev/ /proc/ und /sys/ und weitere

In diesen Unterverzeichnissen können nun wieder Unterverzeichnisse drin liegen, im Falle von Android unter /system/ etwa /system/app/ /system/bin/ /system/etc/ /system/framework/ /system/lib/ /system/xbin/ und weitere, oder unter /data/ etwa /data/app/ /data/data/ /data/misc/ und weitere.

In jedem Verzeichnis können aber auch Dateien drin liegen. Im Root-Verzeichnis wird man /init und /init.rc und andere finden

Bitte beachten: Um Dateien von Verzeichnis zu unterscheiden, schreibt man i.a. am Ende eines Verzeichnisnamens das Zeichen / wobei das nicht wirklich notwendig ist, da es nicht erlaubt ist, dass in einem Verzeichnis zwei Objekte gleichen Namens drin sind, auch nicht, wenn das eine eine Datei und das andere ein Verzeichnis ist. Somit ist sichergestellt, dass ein 'Pfad-Name' (das ist der Name eines Verzeichnisses oder einer Datei mit allen 'Eltern-Verzeichnissen' immer eindeutig ist.

Bitte beachten: Im Gegensatz zu Windows gibt es bei Linux und Android nur genau einen Verzeichnisbaum, Laufwerksbuchstaben sind dagegen nicht nötig.

Mounten:

Um weitere Massen-Speicher einzubinden, werden diese in bestimmte Verzeichnisse eingehängt, das heißt deren Inhalte finden sich dann unter dem Pfad des Verzeichnisses, in den das Lauwerk eingehängt wurde (z.b. /storage/usb0/). Diesen Vorgang nennt man Mounten.

'logische' Verzeichnisse und Dateien:

Eine weitere Besonderheit von Linux sind die 'logischen' Verzeichnisse. In denen findet man keine 'Normalen Dateien', sondern logische Einheiten. Das können 'Device-Nodes' (logische Repräsentation von Hardware-Komponenten), Sockets (Kommunikations-Stöpsel zu Service-Prozessen) oder auch Zugriffs-Stöpsel um mit dem Kernel zu kommunizieren.

Zurück zu Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Das Berechtigungs-System

Das Berechtigungs-System ist zweistufig zu verstehen. Das Android-Berechtigungs-System basiert auf dem Linux Berechtigungs-System (das von Unix/Posix übernommen wurde).

Das Linux-Berechtigungs-System:

In Linux Systemen basieren die Berechtigungen darauf, dass es ein System ist, in dem es viele Benutzer gibt. Um Jedem Benutzer seinen Privaten Bereich zukommen zu lassen, wurde ein System erdacht, wie man sicherstellen kann, dass manche Bereiche nur für einen bestimmten Nutzer zugänglich sind, manche Bereiche für mehrere Benutzer, aber nicht für alle und manche Bereiche für alle Benutzer.

Zusätzlich gibt es einen Benutzer, der letztlich alles darf, da er der Administrator des Systems ist. das ist der Benutzer root

Jede Datei (auch 'logische Dateien') und jedes Verzeichnis hat einen Besitzer sowie eine Gruppe zugeordnet bekommen. Die Rechte, um auf diese Datei zuzugreifen werden nun folgendermaßen klassifiziert:

  • Rechte des Besitzers
  • Rechte aller, die in der Zugeordneten Gruppe sind
  • Rechte aller anderen

Dabei gibt es die Rechte:

  • Lesen (r oder 4 genannt)
  • Schreiben (w oder 2 genannt)
  • Ausführen (x oder 1 genannt)

Daher schreibt man gerne die Zugriffs-Rechte auf eine Datei als drei Blocks zu drei Buchstaben, z.B. 'rwx r-x r-x' was bedeutet:

  • Der Besitzer darf Lesen, Schreiben Ausführen (Erster Block rwx)
  • Die Gruppenmitglieder dürfen Lesen und Ausführen (Zweiter Block r-x)
  • Alle anderen dürfen Lesen und ausführen (Dritter Block r-x)

Oder als drei Ziffern z.B. 755

  • Erste Ziffer Eigentümer 7 = 4+2+1
  • Zweite Ziffer Gruppe 5 = 4+1
  • Dritte Ziffer Andere 5 = 4+1

Aber, was wenig bekannt ist: Es gibt noch eine 4 Stelle, die kann man davor schreiben, die gibt 'Vererbungs-Rechte' an:

  • Vererbe beim Ausführen die Rechte des Besitzers 4
  • Vererbe beim Ausführen die Rechte der Gruppe 2

Somit kann eine Datei nicht nur das Recht 755 wie die meisten Binaries sondern auch das Recht 6755 wie zum Beispiel das su-Binary haben. Wer das su Binary ausführt, erbt somit die Rechte des Besitzers, und da das SU-Binary beim installieren als Besitzer den User root zugewiesen bekommt, erbt man dessen Benutzer und Gruppenrechte, während su ausgeführt wird.

Das Android-Berechtigungs-System:

Da es bei Android (zumindest bis Android 4.1) nur einen Benutzer gab, konnte man in Android das Linux-Berechtigungs-System für ein App-Berechtingungs-System recyceln:

Android verwendet für jede App einen eigenen 'Linux-User' mit eigener User-ID. Wenn die App gestartet wird, wird der Prozess dieser App dann als der entsprechende 'Linux-User' gstartet. Zu jeder App gibt es unter /data/data/package.name.der.app/ ein Verzeichnis, das diesem Linux-User gehört und in der (fast) nur dieser reingreifen (lesen/schreiben) darf (root natürlich auch). Somit wird sichergestellt, dass jede App genau nur in 'Ihrem' Verzeicnis rummachen kann/darf.

Gemeinsame Resourcen (z.B. die Sd-Karte /sdcard) gehören bestimmten System-Usern und sind dementsprechenden User-Gruppen zugeordnet (im Falle der SD-Karte ist das (glaube ich) der User media und die Gruppe media.) Daher sind Schreib und Leserechte auf die SD-Karte an die Gruppe media vergeben.

Wenn nun eine App bei der Installation beantragt, dass sie auf die SDKarte zugreifen will, wird der Linux-User, welcher der App zugeordnet ist, in die entsprechende Gruppe aufgenommen. (Ein Linux-User kann in mehrere Gruppen aufgenommen sein.) Daruch erhält der User Zugriff auf alles, was der entsprechenden Grupp zugeordnet ist (z.B. die SD-Karte).

Zurück zu Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Bestandteile des Android OS

Nun möchte ich die Frage behandeln, aus welchen Bestandteilen ein Android-OS genau besteht.

Da das Android-OS in seiner Gesammtheit im Massen-Speicher (Falsh-Speicher) beinhaltet ist, bietet es sich an, diese entsprechender der Einteilung von Android zu behandeln. Das sind im wesentlichen die folgenden Partition:



Zurück zum Start-Beitrag
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Der Bootloader

Wenn ein Android-System normal gestartet wird, ist das erste was gestartet wird, der sogenannte Bootloader.

Normal Start:

Im Regelfall macht der Bootloader nichts anderes, als das Bootimage zu laden und zu starten.

Nur wenn er damit keinen Erfolg hat, starte er ein einen der beiden nachfolgenden Modi.

Bootmenu Mode:

Hinweis: Dieser Modus steht nicht bei allen Android-Geräten zur Verfügung.

Im Bootmenu Mode startet der Bootloader ein alternatives bootbares Image, beispielsweise das Recovery-Image (siehe unten).

Wenn mehrere bootbare Images zur Verfügung stehen, kann der Bootloader in diesem Modus ein Menü anzeigen, welche Image gestartet werden soll.

USB-Download Mode:

Hinweis: Dieser Modus steht nicht bei allen Android-Geräten zur Verfügung.

In diesem Modus startet der Bootloader zumeist, wenn er durch den 'ADB-Befehl' (siehe unten) 'adb reboot bootloader' gestartet wurde, oder durch ein 'Reboot-Menü' das den Punkt 'Reboot Bootloader' anbietet (z.B. im CM-ROM oder in manchen Recovery-Tools)

In diesem Modus kann man vom PC Fastboot Befehle an den Bootloader schicken (siehe unten).

Diese Fastboot Befehle können u.a folgendes:

  • Den Bootloader entsperren, damit er die nachfolgenden Befehle auszuführen bereit ist.
  • Ein per USB übertragenes Image booten
  • Ein per USB übertragenes Image in eine bestimmte Partition reinschreiben
  • Das Ssystem restarten oder mit dem Booten des Systems fortharen


Zurück zu Bestandteile Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Das Boot-Image

Das Boot-Image ist die Komponete, die bei einem Normal-Start des Android-Systems vom Bootloader gestartet wird, um Android zu starten. Es enthält den Kernel und eine RAM-Disk, die als Root-Verzeichnis gemountet wird und in der das init-Binary und das init.rc Script drin liegen (siehe RAM-Disk)

Der Kernel:

Der Kernel ist die Zentrale Komopnente des Systems. Alle (fast alle) Zugriffe auf die Hardware des Tablets laufen durch den Kernel. Er verwaltet Speicher (RAM), Prozessor (CPU und GPU), Display, Sound, Filesystem (Flashspeicher und SD-Karte, USB Laufwerke und Netzwerk-Laufwerke) Netzwerk-Adapter (Wifi, 3G, LAN, Bluetooth), Eingabe (Touchpad, Power und Lautstärke-Knöpfe, Lagesensor) und GPS, USB-Adapter und sogar das Power-LED und die Akku-Ladevorrichtung. Jedes angeschlossene USB Gerät (z.B. USB-Tastatur) muss von Kernel erkannt und unterstützt werden. Ebenso ist die Frage, welche Datei-Systeme das erkennt, vom Kernel abhängig. Ausnahme bilden hier bestimmte 'User-Space-Adapter, bei denen der Kernel bestimmte Hardware-Komponeten an den User-Space (Benutzerbereich) zur Verwaltung durchreicht, z.b. FUSE, das Datei-System mit die 'Interne SD-Karte' emuliert wird.

Der Kernel kann zur Laufzeit durch sogenannte Kernel-Module erweitert werden. Diese müssen jedoch sehr genau zu der Kernel-Version passen.

Die RAM-Disk:

Die RAM-Disk ist im Prinzip ein gepacktes Archiv, in dem ein paar Datein drin liegen, die das Android-System zum starten benötigt. Dieses Archiv wird entpackt und als Wurzel-Verzeichns verwendet. Es enthält das init-Binary sowie das init.rc Script, die nach dem Start des Gerätes und dem Selbstinitalisieren des Kernel das Android-System starten. Dazu wird vom Kernel das init-Binary gestartet, dass dann das init.rc Script läd, um seine Anweisungen, was zu tun ist, aus dem Script zu lesen. Um das init.rc Script universell zu halten, wird vom init.rc Script ein weiteres Script init.<Gerätenamen>.rc aufgerufen, ebenso ein paar weitere Scripte für das Einbinden (mounten) von Filesystem und Regeln zum Umgang mit USB-Geräten.

Zurück zu Bestandteile Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Die System-Partition

Das Android-System (ROM) ist die nächste Schicht überhalb des Kernels. Hierzu gehört eine Reihe von Programmen und Bilbliotheken, die die Basis-Funktionalität von Android gewährleisten. Hier ist eigentlich zwischen zwei Ebenen zu unterscheiden. Die Service-Ebene stellt im HIntergrund Dienste zur Verfügung: Netzwerk-Erkennung (z.B. das das Gerät sich in einem Wifi-Netzwerk anmeldet), die 'Interne SD-Karte', Sound-Effekte (nicht den Sound selbst!), die Möglichkeit, die Dalvik-VM (um die Android-Apps laufen zu lassen), die Verwaltung des Zugriffs auf das Display (welches Fenster liegt gerade im Vordergrund). Darüber liegt die Anwendungs-Ebene, die unter anderem den Launcher (den Home-Bildschirm), die Einstellungenen, das Android-Keyboard und einiges mehr beinhaltet, Ebenso kommen mit dem Android-System einige Apps für 'Basis-Funktionalitäten' wie Kamera oder Browser.

Das Besondere an der System-Partition ist, dass diese im Normalfall nur lesbar ins System eingebunden wird. Dadurch können ihre Inhalte nicht beschädigt werden und das Android-System bleibt immer erhalten.

Wichtige Verzeichnisse in der System-Partition:

  • /system/app/ Darin liegen die System-Apps
  • /system/bin/ Darin liegen die Binaries, die vom Linux-System und teilweise vom Android-System benötigt werden.
  • /system/etc/ Hier liegen Konfigurations-Dateien, die nicht im laufenden Betrieb geändert werden sollen.
  • /system/framework/ Hier liegen die Bestandteile des Android-Frameworks die keine Apps sind
  • /system/lib/ Hier liegen die Bibliotheken, die das Linux und teilweise das Android-System benötigen
  • /system/xbin/ Hier liegen zusätzliche Binaries für das Linux und Android-System

Zurück zu Bestandteile Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: chicolino und hansichen
Die User-Daten-Partition

Das besondere an dieser Partition ist, dass die bei der Auslieferung des Gerätes völlig leer ist. Dennoch kann das Android-Gerät starten. Wenn beim Starten des Android-Systems diese Partition leer ist, schreiben die System-Apps erstmal ein paar initiale Daten in diese Partition, deswegen dauert der erste Start eine Android-Gerätes etwas länger als die darauffolgenden Starts.

Bei einen sogenannten 'Werks-Reset' oder auch 'Wipe-Data' oder 'Factory-Reset' werde die Inhalte der User-Data-Partition (bis auf die 'Interne SD-Karte') einfach gelöscht. Dann fängt das System von vorne an.

Was wird in der User-Daten-Partition gespeichert:

  • Alle Systemeinstellungen des Benutzers
  • Alle Apps die der Benutzer speichert
  • Alle Einstellungen, din in Apps gemacht werden.
  • Wenn es eine 'Interne SD-Karte' gibt, deren Inhalte

Wichtige Verzeichnisse in der User-Daten-Partition:

  • /data/app/ Die vom User installierten Apps
  • /data/data/ Die Daten zu jeder App, auch der System-Apps (jede hat ein eigenes Unterverzeichnis).
  • /data/media/ Die Inhalte der 'Internen SD-Karte' (wenn vorhanden).
  • /data/misc/ Systemeinstellungen für verschiedenste Anwendungszwecke

Zurück zu Bestandteile Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: chicolino und hansichen
Die Cache-Partition

Zur Cache-Partition gibt es nicht allzu viel zu sagen. Dort können Daten zwischengespeichert werden, jedoch darf man sich nicht darauf verlassen, dass diese Daten dort erhalten bleiben.

Die Cache-Partition unter anderem genutzt, um von Android-System aus Anweisungen an das Recovery übergeben zu können.

Bei einem sogenannten 'Werks-Reset' oder auch 'Wipe-Data' oder 'Factory-Reset' wird der Inhalt der Cache-Partition sicherheitshalber auch mit gelöscht.

Zurück zu Bestandteile Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Das Recovery-Image

Das Recovery-Image ist neben dem Boot-Image ein weiteres bootbares Image im Android-System.

Im Standard-Fall findet sich darin ein '3e Recovery', das aber gegen ein Custom-Recovery ausgetauscht werden kann, das i.A mehr Features bietet.

Das 3e Recovery

Es bietet Möglichkeiten, Updates von der internen SD-Karte zu installieren. Im allgemeinen muss das Update in Form einer Datei namens update.zip auf der internen SD-Karte vorliegen. Manche Hersteller bauen das 3e Recovery so, dass es nur vom Hersteller signierte update.zip Dateien installiert.

Des weiteren bietet es noch die Möglichkeit, einen 'Werks-Reset' oder auch 'Wipe-Data' oder 'Factory-Reset' genannt, durchzuführen.

Custom Recovery

Es gibt außer dem 3e Recovery auch noch verschiedene Custom-Recovery Varianten. Diese bieten zusätzliche Features wie das installieren von 'Nicht-Hersteller-Signierten Updates' oder das erstellen eines 'Nandroid-Backups', ein Backup das (fast, bis auf den Inhalt der Internen SD-Karte) das gesamte System (Boot-Image, /system und /data) beinhaltet und somit in fast jeder Situation eine vollständige Systemwiederherstellung ermöglicht.

Das Einspielen von 'Nicht-Hersteller-Signierten Updates' ist der Schlüssel zum installieren von CustomROMs und auch ein guter Weg, sein System zu 'rooten'.

Zurück zu Bestandteile Android OS
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Modifizieren des Android-Systems

Das Android-System bietet dem Anwender Möglichkeiten, das System zu Modifizieren. Manche Hersteller versuchen das zu unterbinden, aber manche Hersteller sind hier Kooperativ. Eine der Hauptgründe, warun sich ein System nicht modifizieren lässt, ist dass der Bootloader sich nicht entsperren lässt, oder nur auf bestimmte Art entsperrt werden kann. Da dies hochgradig Hersteller- bzw Geräte-Abhängig ist, muss sich der Anwender auf jeden Fall im Geräte-Fachbereich informieren.

Im Detail will ich hier auf folgende Punkte eingehen:



Zurück zum Start-Beitrag
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
ADB und Fastboot

ADB (Android Debug Bride) und Fastboot sind zwei Kommand-Zeilen Tools die auf dem PC installiert werden können. Damit diese Funktionieren, sind die Geräte-Abhängigen ADB-USB-Treiber zu installieren. es git zwar die Legende vom Universal-ADB-USB-Treiber, aber dieser ist nicht universell, sondern nur für viele Geräte, aber nicht für alle Geräte geeignet. Bitte Daher im Gerätes-Fachbereich nachschauen. Wenn es keinen passenden Treiber gibt, habe ich eine Anleitung erstellt, wie man den Univerversellen ADB-USB-Treber auf sein Gerät anpassen kann:

[HowTo] ADB-USB-Treiber selbst an ein Gerät anpassen

Das ABD und Fastboot dagen ist, wenn der ADB-USB-Treiber installiert wurde, für alle Geräte geeignet. Die Windows-Version kann man hier herunterladen:

Bejonwe's A210/A211 DownloadCenter

Wie verwendet man ADB und Fastboot

ADB erlauben:

Als erstes muss das Gerät vorbereitet werden: Das Gerät mit dem USB-Kabel mit dem PC verbinden. Auf dem Gerätt das USB-Debugging erlauben. Dazu unter Einstellung->Entwickleroptionen diese an schalten und den Haken für USB-Debugging setzen:

Hinweis: Unter Android 4.2 und höher sind die Entwickler-Optionen versteckt. Da muss man in den System-Einstellungen auf 'Über das Gerät' gehen und dann sieben mal auf Build-Version tippen!

attachment.php


Das runtergeladene ADB-und-Fastboot-ZIP-File auf der Festplatte des PCs entpacken. Dann dieses Verzeichnis im Datei-Explorer öffnen und mit einem Doppelklick die Datei Cmd.bat starten. Dann sollte sich ein schwarzes Windows-Eingabe-Fenster öffnen.

Prüfen, ob die Verbindung steht, die Treiber geladen und USB-Debugging aktiviert sind:

Im diesem Fenster eingeben und danach die Enter-Taste drücken:
Code:
adb devices

Das sollte dann so aussehen:

attachment.php


Die Nummer '30417487015' wird jedesmal eine andere sein, aber wichtig ist, dass eine Nummer erscheint. Sollte dies nicht der Fall, die Treiber-Insatlllation überprüfen und nochmals prüfen, dass das Gerät das USB-Debugging aktiviert hat.

Genereller Hinweis: In dem schwarzen Fenster kann man zwei verschiedene Kommando-Arten eingeben:
  • adb ... (Das sind die Kommandos, wenn Android gestartet ist)
  • fastboot ... (Das sind die Kommandos, wenn nur der Bootloader des Gerätes gestartet ist)

Zurück zu Modifizieren des Android-Systems
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Über das Rooten

Hier möchte ich nochmal bestimmte Begriffe, die im Zuhsammenhang mit dem Rooten stehen, verdeutlichen.

Root-Rechte:

Den Begriff der Root-Rechte hat wohl fast jeder schon gehört. Eigentlich stammt das aus dem Bereich der Linux Basis (genaugenommen sogar aus der Posix-Basis von Linux) des Android-Systems. Dies hat mit der Rechte-Verwaltung zu tun. Eigentlich ist Android kein Multi-User-System, erst mit Android 4.2.2 (versteckte Anfänge auch schon in 4.1) wurde leichte Multiuser Ansätzte eingeführt. Daher konnten die Linux-Multi-User Verwaltung zur Rechte-Verwaltung der Android-Apps genutzt werden Jede App wird als ein eigener Linux-User behandelt, der nur seinen eigenen Bereich sehen und bearbeiten darf. Auf gemeinsame Resourcen darf eine App nur dann zugreifen, wenn der Linux-User der der App zugeordent ist, dieses Recht zugewiesen bekam. Nun gibt es im Linux-System aber einen Super-User, der zu Verwaltungszwecken alles darf, der User root.

Wenn man sein Gerät 'rootet' bedeutet das, dass man ein bestimmtes Stück Software installiert, dass ein App (bzw ein von der App gestartet Prozess) seinen zugewiesen Linux-User wechseln kann und als root-User laufen kann, um im System beliebige Änderung durchführen zu können: Das 'su'-Binary. Um dem Geräte-User Kontrolle darüber zu geben, welche App diesen Zugriff machen möchte, gehört i.A. zum su Binary auch eine SuperUser-App, die vom su Binary angesprochen wird, um vom Geräte-User das Einverständnis einzuholen.

Also bedeutet das Gerät zu rooten, dass man in der System-Partition das su-Binary installiert. Die SuperUser App muss nicht zwingend in der System-Partition installiert sein, diese kann auch bei den User-Apps installiert sein.

System rw mounten:

Es gibt einen Kommandozeile-Befehl mit dem man, wenn man root-Rechte hat, die System-Partition für Schreibzugriffe freigeben kann. Das nennt man RW-Mounten.

Code:
mount -rw -o remount /system

Beim manchen Stock-Kernel (der originale Kernel vom Hersteller) ist dieses jedoch trotz Root-Rechten unterbunden. Die nennt sich 'Secure-Mount'. Es gibt jedoch Kernel, die diese Einschränkung nicht haben. Diese Kernel nennt man 'Insecured'.

System-Apps vs User-Apps:

Der Unterschied zwischen den System-Apps und den User-Apps ist der, dass die System-Apps in der schreibgeschützten System-Partition liegen. Daher können diese (ohne Root-Rechte) nicht deinstalliert werden. Erst wenn man sich Root-Rechte verschafft hat, ist es möglich, dass man die System-Partition für Schreibzugriffe freischaltet (Siehe System rw mounten) und dann System-Apps deinstallieren kann.

Zurück zu Modifizieren des Android-Systems
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
Custom-Recovery installieren

Hinweis: Dieses Totorial wurde nach bestem Wissen und Gewissen geschrieben. Ich übernehme jedoch keine Verantwortung für Folgen jedweder Art, die durch Nachmachen von irgendwelchen hier beschriebenen Maßnahmen entstehen!


Hinweis: Um ein Custom-Recovery zu installieren, benötigt man ein für sein Gerät geeignetes Custom-Recovery. Die Verwendung eines falschen Custom-Recoverys kann zu irreparablen Schäden führen.

Bitte im entsprechenden Geräte-Fachbereich informieren, welches Recovery für das jeweilige Gerät geeignet ist.

Hinweis: Um ein Recovery zu installieren, muss bei vielen Geräte-Arten der Bootloader entsperrt werden. Diese Maßnahme kann Garantie relevant und irreversibel sein.

Wenn ein geeignetes Recovery-Image gefunden wurde, muss das auf der Festplatte des PC gespeichert werden. Für dieses Tutorial gehe ich davon aus, dass man es unter C:\Temp mit dem Namen 'recovery.img' gespeichert hat und referenzere es daher als C:\Temp\recovery.img . Wenn man es an anderem Ort oder anderem Namen gespeichert hat, muss man die Fastboot-Befehle entsprechend anpassen.

Bootloader entsperren:

Dazu muss das Gerät gestartet sein und mit dem PC per USB-Kabel verbunden sein (Siehe oben). Dann das Cmd.bat aus dem ADB und Fastboot Verzeichnis mit einem Doppelklick starten, dass sich das schwarze Fenster öffnet. Jetzt in dem schwarzen Fenster eingeben und Enter drücken:

Code:
adb reboot bootloader

Das Tablet sollte jetzt neu starten und und nur den schwarzen Startbildschirm mit einer kleinen weisen Textzeile darstellen. Das ist der Modus, wenn der Bootloader gestartet ist.

Dann in dem schwarzen Fenster eingeben und Enter drücken:

Code:
fastboot oem unlock

Was jetzt kommt, ist sehr startk Geräte-abhängig, auf jeden Fall muss man die Aktion bestätigen. Als Beispiel was kommen kann, beschreibe ich hier den Prozess bei einem Acer A210:
Beim A210 sollte ein Bild von einem Schloss und ein Bild von einer Tür erscheinen. Mit der einer der beiden Laut/Leise Tasten kann man von der Tür (verlassen) auf das Schloss (unlocken) wechseln, dann mit der andern Taste bestätigen.

Hier muss man schnell sein, sonst schlägt ein Timeout zu. Wenn das Tablet wegen Timeout rebootet hat, wieder bei adb reboot bootloader anfangen und nchmal probieren.​

Recovery probeweise booten:

Wenn der Bootloader entsperrt ist, kann man probeweise mal das Recovery booten. Ich empfehle zuerst das Recovery probeweise zu booten bevor es dauerhaft installiert!

Um das Recovery zu booten im schwarzen Fenster eingeben und Enter drücken:

Code:
fastboot boot C:\Temp\recovery.img

Das TWRP-Recovery und das Kiwi-Recovery haben eine Menü-gesteurte Benutzer-Oberfläche, das ClockworkMod Recovery (CWM) dagegen stellt nur einen grauen Hintergrund mit einem weisen Text-Menü dar. Hier navigiert man mit den Laut-Leise Tasten hoch und runter oder bestätigt mit der Power-Taste. Am Anfang sollte man im Menu auf dem Punkt 'reboot now' stehen.

Schon vor dem Installieren des Recovery ein Backup ziehen:

Jetzt ist ein guter Zeitpunkt, ein Backup des vorhanden Systems anzulegen. Sollte irgendwann mal irgendwas schief gehen, kann man das Backup wieder einspielen!

Dazu mit Laut-Leise auf den Punkt 'backup and restore' navigieren. Mit Power-Taste bestätigen. Dann 'backup to external sd' anwählen (wenn man eine Externe SD-Karte drin hat, ansonsten zu 'backup' navigieren. Mit Power-Taste bestätigen.

Nach dem Backup sollte man das gezogene Backup-Image testen, indem man auf 'restore from external sd' oder falls man nicht auf die externe sd gebackupt hat auf 'restore' navigieren und mit Power-Taste bestätigen. Nun bekommt die Liste der vorhanden Backups (nach dem ersten mal nur eines...) angezeigt, das auswählen und mit Power bestätigen. Nun kommt eine Frage ob man das wirklich will mit ganz vielen 'no' und einem 'yes'. Zu 'yes' navigieren und mit Power bestätigen, dann wird versucht, ob sich das Backup einspielen lässt.

Das ist gefahrlos, da die Qualität des Backup über MD5-Checksummen geprüft wird, und nur eingespielt wird, wenn es OK ist!

Wenn das Backup gezogen wurde, weiss man, dass das Recovery auf dem Gerät läuft und kann das Tablet restarten, um das Recovery richtig zu installieren.
Dazu auf den Punkt 'go back' navigieren und bestätigen, um das Backup/Recovery-Untermenü zu verlassen und dann auf reboot now navigieren und bestätigen.

Sollte das Recovery nicht richtig arbeiten, auf keinen Fall das Recovery installieren!

Nach dem restart sollte man wieder im Android gelandet sein.

Am besten jetzt den neu entstandenen Folder clockworkmod von der externen (oder internen) SD auf den Computer sichern, damit man immer ein Backup seines originalen Android-Systems hat!

Das Recovery endgültig installieren:

Jetzt in dem schwarzen Fenster eingeben und Enter drücken:

Code:
adb reboot bootloader

Das Gerät sollte jetzt neu starten und wieder nur den schwarzen Startbildschirm mit einer kleinen weisen Textzeile darstellen. Das ist der Modus, wenn der Bootloader gestartet ist.

Dann in dem schwarzen Fenster eingeben und Enter drücken:

Code:
fastboot flash recovery C:\Temp\recovery.img

Wenn das erledigt ist, kann man in dem schwarzen Fenster eingeben und Enter drücken:

Code:
fastboot continue

Dann startet wieder das Androiid-System.

Zurück zu Modifizieren des Android-Systems
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: bruno123web und hansichen
Custom-ROM und Custom-Kernel installieren

Zuerst muß man die Installierbaren ZIPs von den Custom-ROMs oder dem Custom-Kernel auf seine externe SD oder die interne SD des Tablet kopieren, um sie im Recovery zu installieren.

Um ins Recovery zu kommen, kann man entweder wieder in dem schwarzen Fenster eingeben und Enter drücken:

Code:
adb reboot recovery

oder bei ausgeschaltetem Gerät über eine Tasten-Kombi ins Reovery booten. Dies ist stark Geräte-abhängig, daher bitte im Geräte-Forum nachgucken.

Sollte man noch kein Backup gemacht haben, sollte man das spätestens vor der ersten Inastallation tun!

Um ein Custom-ROM oder Custom-Kernel zu installieren muss man wenn das Recovery gestartet wurde den Punkt 'install ZIP from sd' anwählen, danach 'choose zip' oder 'choose from external sd', jenachdem wo man das Zip auf das Tablet kopiert hat.

Nach der Installation eines Custom-ROM wird oft ein 'Wipe data/Factory-Reset' verlangt, der kann auch mit dem Recovery gemacht werden.

Völlig unnötig ist es, vor einer ROM-Installation die System-Partition zu formatieren, bei einem Custom-Kernel oder manchen ROMs sogar schädlich. Daher nicht machen!

Zurück zu Modifizieren des Android-Systems
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: hansichen
App Entwicklung

Um auf Android Apps zu entwicken, gibt es das Android SDK

Dies sollte man sich am besten zusammen mit der Entwicklungsumgebung Eclipse installieren. Beides zusammen findet man hier: Setting Up the ADT Bundle | Android Developers

Wenn man bereits Ecpilse installiert hat folgt man dieser Anleitung: Setting Up an Existing IDE | Android Developers

Im Detail möchte ich auf folgende Punkte eingehen:



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

Ähnliche Themen

harvey186
  • harvey186
Antworten
1
Aufrufe
991
harvey186
harvey186
H
  • Hyundaicarlo
Antworten
1
Aufrufe
976
yessir99
Y
Eifelexil
  • Eifelexil
Antworten
4
Aufrufe
1.611
Eifelexil
Eifelexil
Zurück
Oben Unten