Werfen wir als nächstes einen kurzen Blick auf die Ordnerstruktur und die Komponenten eines Android Projekts:

Ordnerstruktur im Eclipse Package Explorer

Die Android Ordnerstruktur im Eclipse Package Explorer

  • src
    Enthält den Source Code, welcher in unterschiedliche Packages gegliedert werden kann.
  • gen
    Enthält die automatisch generierte Klassen des Android Projekts. Achtung, diese Klassen sind nicht dazu gedacht, von Hand geändert zu werden. Änderungen gehen verloren, sobald die Klassen neu generiert werden!
  • Android 4.4.2
    Das Android SDK
  • assets
    Hier werden Ressourcen (Bilder, Videos, Audio-Dateien…), die in die App gepackt werden, abgelegt.
  • libs
    Dient zur Ablage der im Android Projekt verwendeten third party Bibliotheken.
  • res
    Dient zur Ablage von Android spezifischen Ressourcen wie Layouts, Übersetzungen, Menüs. Im Gegensatz zu Daten im assets Ordner werden Daten im res Ordner über eine ID angesprochen.
 

Kernkomponenten einer Android App:

Eine Android App besteht aus verschiedenen Komponenten wie Activities, Fragmente, Services, Content Provider, Broadcast Receiver, der Manifest-Datei und Ressourcen, die im folgendem kurz vorgestellt werden:

Activities

  • Ein Activity stellt in der Regel eine einzelne Bildschirmseite der App dar. Z.B. eine App zum Verwalten von Kontakten. Sowohl die Liste aller Kontakte als auch die Detailansicht eines Kontakts würden als zwei eigenständige Activity implementiert werden.
  • Eine App besteht in der Regel aus mehreren Activities.
  • Auf Activities wird im Kapitel Android Activity noch genauer eingegangen.

Fragmente

  • Ein Fragment ist ein wiederverwendbarer Teil der Benutzerschnittstelle.
  • Activities verwenden Fragmente abhängig von der Bildschrimgröße um auf Tablets und Handies unterschiedliche Informationen anzuzeigen.
  • Fragmente besitzen einen eigenen Lebenszyklus.
  • Fragmente werden im Kapitel Android Fragment behandelt.

Services (Dienste)

  • Werden in einem Android Projekt zum Ausführen von lange dauernde Operationen im Hintergrund (Download, Abspielen von Musik etc…) verwendet.
  • Enthalten keine Benutzerschnittstelle
  • Laufen unabhängig von den Komponenten, die sie erzeugt haben. (Wird das Activity beendet, läuft der Dienst/Service weiter).
  • Können von mehreren Apps verwendet werden.

Content Provider

  • Dient zum Speichern und Abrufen von Daten und stellen die Daten Apps zur Verfügung.
  • Ermöglicht den Datenaustausch zwischen Apps durch das Bereitstellen einer URI zur Identifikation eines Datensatzes.
  • Daten werden über eine Tabelle eines Datenbankmodells bereitgestellt.
  • Android bietet Content Provider für Kalender, Kontakte, Media…

Broadcast Receivers

  • Reagieren auf Systembenachrichtigungen (Bildschirm Ausschalten, Batterie wird Leer, SMS erhalten…)
  • Apps könne Broadcasts versenden, auf die andere Apps reagieren.
  • Enthalten keine Benutzerschnittstelle, können jedoch Statusleisten-Benachrichtigungen erzeugen, um den Benutzer zu informieren.

Das Android Manifest

  • AndroidManifest.xml liegt im Root-Verzeichnis der App und dient zur Konfiguration des Android Projekts.
  • Stellt dem Betriebssystem Informationen über die App bereit:
    • Package, Name und Version der App.
      Das Package identifiziert die App und muss eindeutig sein.
      Der Name dient lediglich zur Anzeige im Launcher.
      Der Versionscode muss vor dem Upload in den PlayStore erhöht werden.
    • Aus welchen Komponenten (Activities, Services, Content Provider) die App besteht.
    • Die benötigten Berechtigungen.
    • minSdkVersion – Minimum API Level, den die App benötigt (Geräte mit kleinerem API Level können die App nicht installieren).
    • targetSdkVersion – API Level, auf dem die App ausgelegt ist. Kann höher sein als minSdkVersion.

Ressourcen und Assets

  • Enthalten Daten eines Android Projekts wie Bilder, Videos, Audio und Text in unterschiedlichen Übersetzungen.
  • Dateien aus den Ordnern res und assets werden in die fertige App hineingepackt.
  • Das Kapitel Android Assets erklärt die Unterschiede der beiden Verzeichnisse anhand einer Beispiel App.