App

Aus Android Wiki

Als App (Abk. für Application, deutsch: Anwendung, Synonym für Programm oder Anwendung) bezeichnet man ausführbare Anwendungen, die dem Nutzer eines Betriebssystems zusätzliche Funktionen oder Verbesserungen zur Verfügung stellen. Grundsätzlich kann der Begriff App synonym für Anwendungen aus verschiedenen Bereichen verwendet werden, etabliert hat sich die Bezeichnung allerdings im Bereich der mobilen Betriebssysteme (wie bspw. Android, iOS, Windows Phone oder Symbian).

Mobile App[Bearbeiten | Quelltext bearbeiten]

Der Begriff App kann analog auf jedes Betriebssystem verwendet werden, welches die Möglichkeit bietet, zusätzliche Programme zu installieren. Aus diesem Grund können Apps, die besonders für die mobile Verwendung (bspw. auf einem Smartphone) konzipiert wurden, auch als Mobile Apps bezeichnet werden. Solche Apps können i.d.R. über einen App-Shop erworben/installiert werden. Solche Shops sind meist auf dem Gerät vorinstalliert (bspw. der Google Play Store oder F-Droid).

Mobile Apps werden dafür entwickelt, dem Nutzer einen Mehrwert durch neue oder vereinfachte Funktionen zu bieten. In der Entwicklung einer mobilen App wurde dabei, neben der eigentlichen Funktion, meist eine einfache Bedienung berücksichtigt, die aufgrund des begrenzten Platzes auf dem Display und der Bedienung über kleine Tasten, bzw. einem Touchscreen, im mobilen Umfeld eine Herausforderung für die Entwickler darstellt.

Programmiert wird die App meist für ein spezielles Zielsystem, wie bspw. Android. Das entsprechende Paket kann meist auf keiner anderen Plattform (wie bspw. Windows Phone) genutzt werden. Entwickler stehen daher vor dem Problem, dass sie für einen Anwendungszweck meist mehrere Apps für die am meist verbreitetsten Plattformen entwickeln und pflegen müssen, um möglichst viele Nutzer erreichen zu können. Dieses Problem minimiert sich, wenn man, anstelle einer nativen App, eine mobile Web-App entwickelt, die über den Browser genutzt werden kann. Alternativ kann ein entsprechendes Framework verwendet werden, welches die Erstellung eines Artefakts für verschiedene Plattformen unterstützt, wie bspw. Flutter oder React native.

Native App[Bearbeiten | Quelltext bearbeiten]

Die native Tapatalk App bietet dem Nutzer mobilen Zugriff auf verschiedene Internet-Foren.

Native Apps sind Anwendungen, die auf dem gewählten Zielsystem direkt installiert werden (müssen), bspw. über einen Onlineshop. Durch die Installation auf einem Gerät erhält die App Zugriff auf Betriebssystem-Ressourcen und -Schnittstellen (WLAN, Bluetooth, SD-Karte u.Ä.). Eine native App muss dabei für das entsprechende Zielsystem programmiert werden und kann i.d.R. auch nur auf diesem installiert und verwendet werden, da auf einer anderen Plattform die genutzten Schnittstellen und Ressourcen i.d.R. anders angesteuert werden, oder ggf. gar nicht existieren. Auch verwenden verschiedene Plattformen meist verschiedene Programmiersprachen, in denen die Apps ausgeliefert werden müssen (bspw. Android: Java oder Kotlin[1], iOS: Objective C/Swift, Windows Phone: C#, C++, C). Das bedeutet im Umkehrschluss, dass ein Entwickler einer App verschiedene App-Versionen für verschiedene Plattformen entwickeln muss, wenn die App auf verschiedenen Plattformen verwendet werden soll.

Installation und Verwendung[Bearbeiten | Quelltext bearbeiten]

Eine native App muss vor der Verwendung auf dem Gerät installiert werden, soweit es sich hierbei nicht um eine Instant App handelt. Bei mobilen Apps geht dies i.d.R. über einen App-Shop, der bereits in das Betriebssystem integriert ist. Zudem ist es meist möglich, ein Programmpaket separat herunterzuladen und vom internen Speicher des Gerätes zu installieren. Bei Android werden solche Programmpakete als APK-Dateien bezeichnet.

Nachdem die App installiert wurde, wird sie in der Auflistung der installierten Apps (bei Android App-Drawer) angezeigt und kann durch anklicken (bei Touchscreens: darauf tippen) gestartet werden. Auch eine Verknüpfung auf dem Homescreen (auch Desktop od. Arbeitsoberfläche) kann auf den meisten Betriebssystem erstellt werden, um die wichtigsten Apps auf einem zentralen, leicht erreichbaren Ort zur Verfügung zu haben.

Da es grundsätzlich keinen Standard für das Auftreten, bzw. Aussehen, einer App gibt, können verschiedene Apps grundlegend verschiedene Bedienkonzepte aufweisen. So ist es bereits innerhalb einer Plattform schwierig, einen allgemein gültigen Leitfaden für die Verwendung einer App aufzustellen. Plattformübergreifend ist dies nahezu unmöglich, wenn die verschiedenen Plattformen selbst in ihren Betriebssystemeigenen Funktionen grundlegend unterschiedlich sind.

Bei Android bietet Hauptentwickler Google daher bereits seit einige Zeit einen Design-Guide, der es Entwicklern erleichtern soll, ein intuitives Design in ihren Apps zu integrieren. Positiver Nebeneffekt für den Nutzer ist dabei die grundliegende Vereinheitlichung des Designs von Apps, je mehr Entwickler diesem Design Guide folgen. Aufgrund einer solchen Vereinheitlichung könnte es irrelevant sein, welche App sich der Nutzer installiert. Er kann, aufgrund seiner Erfahrung aus anderen Apps und durch die logische Platzierung einzelner Bedienelemente, diese sofort verwenden.

Sicherheit[Bearbeiten | Quelltext bearbeiten]

Da eine native App direkt auf dem Gerät installiert ist, hat sie auch Zugriff auf verschiedenste, durch das Betriebssystem gespeicherte, Daten. Da auf einem mobilen Gerät, bspw. einem Smartphone, auch sensible Daten, wie Kontakte oder SMS, gespeichert sind, muss der Zugriff auf diese Daten durch das Betriebssystem reguliert werden. So soll eine App nur auf diese Informationen Zugriff haben, die sie auch für die Ausführung ihrer Aufgaben benötigt (eine reine Spaßanwendung, wie ein Spiel bspw., benötigt i.d.R. keinen Zugriff auf die Kontakte um seine Aufgabe zu erfüllen).

Hauptartikel: Berechtigungen

In Android gibt es daher eine Berechtigungssystem, welches auf Gruppen basiert. So hat jede Gruppe Zugriff auf einige, wenige Systemressourcen. Wird eine neue App installiert, muss der Nutzer bestätigen, dass diese App eine Reihe von Berechtigungen erhält (die vom Entwickler angefordert werden). Stimmt der Nutzer dieser Anforderung zu, werden der App die zugehörigen Benutzergruppen zugewiesen. So stell Android sicher, dass eine App nur Zugriff auf Ressourcen haben, die der Benutzer auch erlaubt hat.

System- und Userapps[Bearbeiten | Quelltext bearbeiten]

Native Apps in Android können in zwei grundlegende Gruppen einsortiert werden, was die Benutzerkontrolle und den Installationsort betrifft: System-Apps und User-Apps.

Grundsätzlich ist Android ein modulares System. Das bedeutet, dass (bis auf den Kernel) jede beliebige Funktion durch ein anderes Programmpaket übernommen/ausgewechselt werden kann. So kann bspw. die aktuell installierte App, über die der Nutzer die Kontakte verwaltet und anzeigt, jederzeit durch eine andere App ausgewechselt werden. Um dies weitestgehend zu verhindern (bzw. zu erschweren), kann ein Hersteller (oder jede andere Person) einige Apps als System-Apps installieren. Diese unterscheiden sich grundsätzlich nicht von normalen Apps, haben die gleichen Berechtigungen und könnten prinzipiell auch wie eine Userapp installiert werden können. Allerdings werden Sie auf der Partition /system (/system/app) (vor-)installiert, auf welchem sich auch das Android-System befindet. Durch eine herstellerseitige Softwaresperre, kann das Schreiben auf der /system Partition verhindert, und somit das Deinstallieren von Systemapps, verhindert werden. Auch lassen sich Systemapps nicht auf dem Standardweg installieren (über einen Appshop oder durch die Installation einer APK-Datei werden Apps als Userapps installiert). Die APK-Datei der zu installierenden App muss auf die Partition /system im Ordner app abgelegt werden und mit den Dateirechten rw- r-- r-- (Eigentümer: Lesen/Schreiben, Benutzer: Lesen, Andere: Lesen, chmod 644) versehen werden. Bei einem Neustart des Gerätes wird die App automatisiert installiert.

Im Gegensatz zu Systemapps sind Userapps Apps, die vom Benutzer i.d.R: selbst installiert wurden und auf der Partition /data (/data/data/app) installiert werden. Solche Apps kann der Benutzer selbst über die Einstellungen problemlos deinstallieren.

(Mobile) Web-App[Bearbeiten | Quelltext bearbeiten]

Beispiel einer für Mobilgeräte angepassten Webseite

Im Gegensatz zur nativen App steht die sogenannte Web App. Eine Web App wird, wie der Name bereits aussagt, keine Installation auf dem Endgerät, was sowohl für den Entwickler, wie auch für den Nutzer einige Vorteile darstellt. So kann der Nutzer i.d.R. komplett auf eine Installation der App verzichten, da diese im Webbrowser ausgeführt wird. Für den Entwickler ist die Pflege und Weiterentwicklung einer Web App i.d.R. deutlich einfacher, da lediglich ein Source-Code benötigt wird und die Pflege mehrere Plattformen entfällt. Allerdings kann auch eine Web App verschiedene Anforderungen an den Webbrowser stellen, die zur Ausführung benötigt werden. Am häufigsten ist hier bspw. JavaScript oder Java zu nennen; ersteres wird von den meisten (auch mobilen) Webbrowsern unterstützt.

Um eine Web App auch auf einem mobilen Gerät einfach nutzen zu können, verwenden viele Anbieter eine für Mobilgeräte angepasste Bedienoberfläche, die besonderen Wert auf die einfache Bedienung auf kleinen Bildschirmen und/oder Touchscreens legen.

Hybride App[Bearbeiten | Quelltext bearbeiten]

Bei einer hybriden App wird die App hauptsächlich mit sog. Web-Technologien implementiert, also HTML, JavaScript und CSS. Dieser Web-Content wird in eine native Container-App gepackt, die den Webcontent mit einem Browser-Element (bei Android das WebView-Element) darstellt. [2] Eine hybride App ist also eine Mischform zwischen einer nativen App (dem Container) und einer Web-App (eigentliche App-Oberfläche und Logik).

Hybride Apps können auch in App-Stores wie z.B. Google Play vertrieben und damit auch monetarisiert werden können.

Ein weiterer Vorteil von hybriden Apps ist, dass damit oftmals Cross-Plattform-Fähigkeit erreicht werden kann, da derselbe Web-Content in native Container-Apps für die verschiedenen mobilen Betriebssysteme (neben Android z.B. noch iOS) gepackt werden kann.[3]

Ein bekanntes Framework für die Erstellung solcher hybrider Apps ist Apache Cordova[4] bzw. Adobe PhoneGap[5].

Ebenfalls als hybride App bezeichnet wird eine App, die durch Übersetzung von Web-Content in eine native App auf dem Entwicklungs-Rechner erzeugt wird[2], z.B. Appcelerator.[6]

App-Kategorien[Bearbeiten | Quelltext bearbeiten]

Die Vielzahl an verfügbaren Anwendungen in verschiedenen Verteilungssystemen, bspw. dem Google Play Store, lassen sich nicht eindeutig in eine einheitliche Struktur bringen. Viele Anbieter ordnen die Apps daher in verschiedene Kategorien ein, in welche die Funktionen der Apps am besten herein passen. Beispiele für solche Kategorien können sein:

  • Entertainment
  • Spiele
  • Internet
  • Mail
  • Messageing
  • Business
  • Performance

Android App programmieren[Bearbeiten | Quelltext bearbeiten]

Apps können sowohl von Privatpersonen, wie auch von Unternehmen entwickelt und veröffentlicht werden. Die Programmierung erfolgt mit Hilfe der Programmiersprache Java, die schon von den Handys mit älteren Betriebssystemen verwendet wurden. Durch Java wird eine Kompatiblität mit allen Androidversionen gewährleistet.

Weitere Informationen zur Entwicklung einer App findet man bspw. in diesem WikiBook. Ein schnelles und einfaches Tutorial für Programmierer mit Erfahrung hat Jan Kammerath mit Android App Programmieren geschrieben.

Veröffentlichen von Apps[Bearbeiten | Quelltext bearbeiten]

Logo der Google Play Developer Console

Die beste Möglichkeit seine Apps zu vertreiben, ob nun kostenfrei oder kostenpflichtig, ist der Google Play Store. Dieser ist auf vielen Android-Geräten bereits vorinstalliert und erreicht somit eine große Menge von Nutzern. Um Apps im Play Store veröffentlichen zu können, muss man sich bei Google als Entwickler anmelden und eine Gebühr von einmalig 25 $ entrichten, die über eine Kreditkarte oder anderen, von Google Wallet unterstützte Zahlungsmethode, zu zahlen sind. Mit der Gebühr soll ein Überfüllen des Play Store mit sinnlosen Apps eingegrenzt werden. Nachdem man sich als Entwickler registriert hat, kann man seine App hochladen. Hierfür benötigt man folgende Angaben:

  • .apk-Datei
  • Screenshot
  • Werbegrafik (optional)
  • Sprache
  • Titel
  • Beschreibung
  • Werbetext

Nachdem man die App hinzugefügt hat, wird diese nach einiger Zeit im Store gelistet und kann heruntergeladen werden. Eine Freischaltung durch einen Googlemitarbeiter ist nicht notwendig, allerdings erfolgt eine automatisierte, maschinelle Prüfung der App. Entspricht der Inhalt der Anwendung nicht den Richtlinien des Play Store, wird diese entfernt.

Google überprüft die Apps automatisch auf Malware-Funktionalität (ähnlich einem Viren-Scanner) und entfernt ggf. als schädlich erkannte Apps. Diese "Bouncer" (engl. für Türsteher, Rausschmeißer) genannte Malware-Erkennung[7] wird nach eigenen Angaben stetig weiterentwickelt um so die Sicherheit im Play Store zu gewährleisten.

Apps deinstallieren und deaktivieren[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: Apps deaktivieren

Android bitete die Möglichkeit, installierte Apps zu deinstallieren. Dadurch kann Software bspw. durch den Google Play Store installiert und nicht mehr benötigte Software über die Einstellungen (oder wahlweise auch wieder über den Play Store) deinstalliert werden. Vorinstallierte Apps und Apps, die nicht auf der /data-Partition liegen, lassen sich hingegen nicht deinstallieren und können durch den Anwender i.d.R. nur deaktiviert werden.

Backup von App-Daten[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: Backup

Daten von Apps können über verschiedene Wege in einem Backup gesichert werden. Einige davon erfordern allerdings Root-Rechte, um die Daten von der /data-Partition lesen zu können. Wege, um ein Backup der App-Daten anzufertigen, sind auf der Seite Backup zusammengefasst.

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  2. 2,0 2,1 Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  3. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  4. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  5. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  6. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  7. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.