Die Architektur von Android

Seite 4: Gespeichert

Inhaltsverzeichnis

Ist eine Anwendung erst einmal installiert und gestartet, läuft sie in einer Sandbox in einem geschützten Speicherbereich. Daten kann sie im Verzeichnis /data/data des internen Gerätespeichers ablegen. Für jede Anwendung existiert hier ein Verzeichnis mit dem Namen des Package, wie es im Android Manifest angegeben wurde. Dateien landen dort im Ordner files, Datenbanken im Ordner databases – eine explizite Pfadangabe ist nicht nötig. Anwendungseinstellungen werden als XML-Datei im Ordner shared_prefs gespeichert.

Außerdem können Anwendungen Daten in einem anwendungseigenen Bereich auf der SD-Karte ablegen, den andere Anwendungen nicht lesen können, oder in öffentlichen Ordnern für andere Anwendungen zugänglich machen. Allerdings sind auch die in einem anwendungseigenen Bereich auf der SD-Karte gespeicherten Daten nicht besonders sicher: Sie lassen sich leicht auslesen, wenn man direkt auf die SD-Karte zugreift. Daher sollten sicherheitsrelevante Daten auf der SD-Karte immer verschlüsselt werden.

Daten, die auf dem Gerät in /data/data gespeichert werden, sind relativ sicher – solange das Gerät nicht gerootet wird. Daher empfiehlt es sich auch hier, sicherheitsrelevante Daten zu verschlüsseln. Das ist jedoch nicht ganz trivial, da Android einen zentralen Schlüsselspeicher (Keystore) für Zertifikate besitzt, den sich alle Anwendungen teilen. Aus Sicherheitsgründen lässt Android keinen Import von Zertifikaten zu, die nicht von einer Certification Authority wie Verisign verifiziert sind. Da verifizierte Zertifikate Geld kosten, müssen Entwickler einen Trick nutzen, der die Verwendung selbst erstellter Zertifikate ermöglicht [2].

Android verwendet das Dateisystem YAFFS (Yet Another Flash File System); Android 2.3 wechselt auf das Linux-Standard-Dateisystem Ext4, das bei Schreib- und Leseoperationen deutlich schneller sein soll. Leider werden wohl nicht alle Hardwarehersteller beim Update auf Android 2.3 diese Änderung mitmachen und noch das alte YAFFS-Dateisystem ausliefern. Einige Hardwarehersteller verwenden zudem ein eigenes Dateisystem, Samsung beispielsweise seine FAT-Erweiterung Robust Fat Filesystem (RFS).

Als Datenbank verwendet Android SQLite, ein quelloffenes, kompaktes, für den Einsatz auf mobilen Systemen optimiertes relationales Datenbanksystem. SQLite bietet die meisten Funktionen, die man von größeren Datenbanksystemen gewohnt ist: SQL-Syntax, Transaktionen, Prepared Statements und so weiter. Die Datenbank verbraucht dabei jedoch zur Laufzeit nur sehr wenig Speicher in der Größenordnung 175 bis 250 KByte.

SQLite wird als Bibliothek direkt zu den Anwendungen hinzugelinkt und benötigt daher keinen Datenbankserver: Anwendungen definieren eine Datenbank und können sie sofort verwenden, ohne dass zuvor ein Datenbankserver starten muss. Genau wie bei Dateien können sich mehrere Anwendungen eine Datenbank teilen. Die Datenbank selbst wird in Form einer einzelnen Datei mit der Endung .db im Ordner databases des Anwendungsverzeichnisses abgelegt.