Technische Grundlagen

Android™ basiert auf dem Linux-Kernel, optimiert ihn aber besonders auf embedded Systeme & mobile Plattformen.

Android nutzt den Linux Kernel mit einigen Anpassungen. Es unterscheidet sich jedoch grundlegend von üblichen Linux Distributionen, wie bspw. Debian / Raspbian / Alpine Linux.

Üblicherweise nutzen Distributionen die GNU C Bibliothek (glibc), und einen X server (bspw. Xorg) für grafische Anwendungen.

Android enthält diese Komponenten nicht. Daher kann “normale” Linux Software auf Android nicht ausgeführt werden.

Google basiert auf der bionic C Library statt glibc – was Vorteile hinsichtlich der Größe und der Ausführungsgeschwindigkeit bietet.

Android ist auf mobile Plattformen optimiert, und bringt seine eigene Virtual Machine mit (Dalvik), die erlaubt in Java geschriebene Anwendungen auszuführen.

Diese Anwendungen  sind gegen die Android API implementiert – Android schafft damit sein eigenes Ökosystem.

Android enthält keine Shell (Kommandozeileninterface, bspw. Bash) – es muss ggf. eine App installiert werden um eine Shell zu emulieren.

Standardmäßig erlaubt Android dem Benutzer keine root Rechte. Es ist als ein single-user System konzipiert worden, im Gegensatz zu modernen Linux Distributionen die auf mehrere Nutzer ausgerichtet sind. (Ein Erbe von Unix, das auf großen Maschinen lief, die von mehreren Studierenden, Professoren, etc. geteilt wurden).

Das Standard-Dateisystem von Android ist YAFFS – speziell für NAND Flash optimiert. Linux Distributionen setzen üblicherweise auf ext3 / ext4.

Google Chrome OS basiert übrigens auch auf einem Linux Kernel, hat jedoch ebenso keinen X Server.

Vorteile von Android

  • einheitliche UI (grafisches Benutzerinterface)
    • UI ist für Touchscreens optimiert
  • umfangreiches Ökosystem von Android apps (900.000+)

Vor allem die Optimierung der UI und der Apps für Touchscreens ist ein wichtiger Punkt, beispielsweise für POS Geräte. Android konnte durch diese neue Ausrichtung die Anwendungen von Anfang an mit den Sensoren, Eingabe und Ausgabe-Möglichkeiten einer modernen mobilen Plattform versorgen, und eine umfangreiche API für die Entwickler bereitstellen.

In manchen Fällen könnte die von Ihnen vorgesehene Anwendung (bspw. Mini-Digital Signage am Messestand) bereits durch eine Android App umsetzbar sein, ohne zusätzliche Entwicklungskosten.

  • Vertraute Nutzung

Durch die weite Verbreitung im Consumer Bereich sind Android-basierende Lösungen für die Endnutzer einfach zu nutzen, und begegnen mehr Akzeptanz, als Custom-Lösungen. (Dasselbe Argument gilt natürlich auch für Windows-basierende Anwendungen, allerdings gehört Windows auch der älteren Generation von Betriebssystemen an, die nicht mobile-first, touch-first waren).

  • Gute Unterstützung durch die Developer Community

Es stehen viele Bibliotheken und erfahrene Anwender bereit, um Ihre Anwendung umzusetzen. Durch den weit verbreiteten kommerziellen Einsatz von Android (auch z.B. im Rahmen von Bring Your Own Device) existieren spezialisierte Firmen, die für Sie Android Anwendungen entwickeln und im Lebenszyklus der Anwendung supporten.

  • Java

Dalvik VM, die virtuelle Maschine von Android, führt Java Anwendungen aus die gegen die Android API entwickelt wurden. Diese Sprache wird auch von Banken eingesetzt, da sie vor allem auf Stabilität und Portabilität achtet.

Java ist eine weit verbreitete Sprache, die viele Entwickler (u.a. empfehlen wir  Moebiusgames als Software Partner) beherrschen. Es gibt viele Standard-Komponenten / Software-Bibliotheken, die Entwicklern Arbeit sparen.

Die Sprache ist sehr gut dokumentiert, und verfügt über ein umfangreiches Toolset (bspw. IDEs – integrierte Entwicklungsumgebungen), die die Zeit reduzieren die Entwickler benötigen.

Auf Linux kommt oft nach wie vor C / C++ zum Einsatz. Während das einen gewissen Performancevorteil bieten kann, da die Anwendungen hardwarenäher laufen, müssen die Entwickler sich um viele Dinger kümmern, die ihnen bei  Java abgenommen werden (Stichwort Pointer). Darunter kann ggf. die Softwarestabilität und –sicherheit leiden.

Alternativ kann man auf Android auch gegen eine C API implementieren (C NDK).

  • Kommunikationsstacks eingebaut

Android verfügt neben WLAN, Bluetooth auch über einen Telefonie- und Mobilfunkstack. Das ist besonders interessant für Anwendungen, die in-field deployed werden, ohne einen festen Netzwerk / WLAN Anschluss.

Natürlich kann man das alles auch mit Linux umsetzen, müsste jedoch dazu Entwicklungsresourcen investieren, u.a. auch für die Weiterentwicklung des eigenen Stacks.

  • optimiert für ARM Plattformen

Android’s primäres Target (von Google unterstützt) sind ARM Plattformen – ARM ist besonders auf Stromverbrauch und embedded optimiert. “A match made in heaven”.

  • Upgrademechanismus eingebaut

Android ist von vorhinein als netz-angebundenes System, mit der Fähigkeit zu Upgrades vorgesehen.

  • Zugriff auf Google Services

U.a. Spracherkennung (unter Umständen Zertifizierung des Gerätes für Android erforderlich)

  • Battiere optimierte Power-Verwaltung eingebaut

Android ist damit vor allem für akkubetriebene Geräte interessant.

Vorteile von Linux

  • Standard-Footprint (Speicherbedarf) ist deutlich kleiner

Bspw. kann mit Alpine Linux eine sehr kleine Linux Distribution verwendet werden, um den Platzbedarf zu reduzieren.

  • Geringere Anforderungen an CPU, größere CPU-Vielfalt

Linux unterstützt viele Plattformen, u.a. auch MIPS. Es kann auf sehr low-powered embedded Plattformen betrieben werden.

Fragen

Kann ich Android kommerziell verwenden?

Ja – der Kern ist unter der Apache Lizenz, und kann kommerziell verwendet werden, ohne Lizenzkosten an Google zahlen zu müssen. Die Google Anwendungen (Play Store, Maps, etc.) stehen unter Google Lizenz.

Um diese Anwendungen zu bekommen muss das Gerät als Google compliant zertifiziert werden.

Muss Android immer auf einem Smartphone / Gerät mit Telefoniefunktion zum Einsatz kommen?

Nein – Android basierende Anwendungen laufen auf medizinischen Geräten, fest installierten Telefonen, Waschmaschinen, Uhren, Auto-Dashboards, TVs und Set-top boxen.

emteria.OS

emteria.OS ist ein Android-Derivat, unter anderem für die Raspberry Pi Plattform.

Unser online shop buyzero.de vertreibt emteria.OS Sets – allerdings mit der emteria.OS personal Lizenz, die nicht für kommerziellen Einsatz zugelassen ist.

Wir können gerne den Kontakt zu emteria GmbH vermitteln.

Ref

The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.

Android is a trademark of Google LLC.