Faragiri

App-Entwicklung lernenProgrammieren

Nach einem Anruf fing der Übungsbogen wieder bei Frage 1 an. Warum ein Telefon am Ladekabel genau den Fehler versteckt, den es erzeugen soll.

5Abschnitte
5Min. Lesezeit
2Tiefe

Die Entscheidung

Einmal schreiben oder zweimal, und entschieden wird es vom Gerät

Drei der vier Zeilen gehen für die meisten Apps gleich aus. Die vierte kippt die Entscheidung, und sie wird zuerst nicht geprüft.

Eine gemeinsame CodebasisBeide Stores aus einem Projekt, zu ungefähr der halben Arbeit
Zwei native CodebasenZweimal geschrieben, in der Sprache und mit den Werkzeugen der Plattform
Listen, Formulare und TextAuf beiden gleich, einmal geschriebenDerselbe Bildschirm zweimal gebaut
Preis des zweiten StoresEin weiteres BauzielEin zweites Team, oder ein halbes Jahr
Eine Funktion, die die Plattform im Herbst ausgeliefert hatVerfügbar, sobald jemand die Brücke schreibtVerfügbar am Tag der Auslieferung
Standort im Hintergrund und WidgetsMöglich, und die Brücke ist das Schwere daranDer dokumentierte Weg, mit den Beispielen der Plattform

Die Zeilen sind nicht gewichtet, und in der Praxis tragen die letzten beiden die Entscheidung allein. Eine App, die keine davon braucht, hat keinen Grund, zweimal geschrieben zu werden.

Robert Thiele ist Kfz-Mechatroniker in Rostock und hat abends eine Übungs-App für die Fahrschule gebaut, in der seine Schwester unterrichtet: 1.100 Theoriefragen, ein Bogen mit dreißig Stück, ein Ergebnis am Ende. Drei Wochen lang hat er sie auf seinem eigenen Telefon geprüft, und sie hat nie ihren Platz verloren.

In der ersten Woche mit echten Fahrschülern kam immer dieselbe Rückmeldung: Nach einem Anruf fängt der Bogen wieder bei Frage 1 an. Sein Telefon lag am Ladekabel auf dem Schreibtisch. Die anderen lagen in Jackentaschen und wurden unterbrochen.

Darin liegt der ganze Unterschied zwischen diesem Thema und dem daneben. Eine Webseite wird angefordert und ausgeliefert. Eine App liegt auf einem Gerät, das knapp an Strom ist, knapp an Aufmerksamkeit, und das sie beenden darf, ohne ihr Bescheid zu sagen.

Der Prozesstod: was der Schreibtisch nie zeigt

Beide Plattformen behandeln eine App im Hintergrund als Speicher, den sie zurückholen dürfen. Eine App wird im Hintergrund beendet und stellt sich aus dem Gespeicherten wieder her. Nicht angehalten, nicht eingefroren: beendet, mit zurückgenommenem Speicher, und später neu gestartet auf dem Bildschirm, den sie für den letzten hält. Was Roberts App nicht aufgeschrieben hatte, hat es nie gegeben.

In Jetpack Compose trennen zwei Wörter diese beiden Fälle. rememberSaveable übersteht den Prozesstod, remember nicht einmal die Drehung. Der Unterschied ist eine Silbe im Quelltext und zwölf Fragen im Ergebnis:

  • var index by rememberSaveable { mutableIntStateOf(0) } // überlebt Drehung und Prozesstod
  • var index by remember { mutableIntStateOf(0) } // überlebt nur die Neuberechnung

Auf der anderen Seite heißt dasselbe Paar in SwiftUI @State und @SceneStorage, und die Regel darüber gilt für jeden Zustand, den eine App hält: Was nicht geschrieben ist, ist beim ersten Anruf weg.

Unsichtbar bleibt das beim Entwickeln, weil ein Telefon am Kabel mit laufendem Debugger von genau diesem Verhalten ausgenommen ist. Die Plattform holt sich keine App zurück, die gerade untersucht wird. Der Fehler, den das Gerät erzeugen soll, ist also der eine, den der Arbeitsplatz unterdrückt. Wer ihn sehen will, schaltet in den Entwickleroptionen von Android die Hintergrundprozesse auf keine und startet den Bogen neu.

Zwei Zahlen, die ein Layout entscheiden

Ein Zeiger auf dem Schreibtisch ist ein Pixel, ein Daumen nicht. 44 Punkte auf iOS und 48 dichteunabhängige Pixel auf Android sind die veröffentlichte Untergrenze für eine Schaltfläche, nicht jemandes Geschmack. Beide sind keine Pixelmaße: Ein Punkt und ein dichteunabhängiger Pixel bleiben über verschieden scharfe Bildschirme hinweg gleich groß, und ein Layout in rohen Pixeln schrumpft genau auf den Telefonen, die am meisten gekostet haben.

Roberts Antwortfelder waren 32 Punkte hoch, weil das im Entwurfswerkzeug richtig aussah. Auf dem Telefon wurde jede sechste Antwort danebengetippt, und niemand hat das als Fehler gemeldet. Gemeldet wurde, die App sei hakelig. In dieser Form kommen die meisten dieser Fehler an, und deshalb ist Mobile Gestaltung ein eigenes Fach und keine Fußnote.

Einmal schreiben, oder zweimal

Die Frage, die dieses Thema beherrscht, ist, ob man einmal oder zweimal schreibt. Sie hat eine echte Antwort, und die hängt davon ab, wie viel vom Gerät die App überhaupt anfasst. Listen, Formulare und Text lassen sich einmal schreiben und in beide Stores ausliefern, zu ungefähr der Hälfte der Kosten. Für eine App um die Kamera herum, um den Standort im Hintergrund, um ein Widget auf dem Startbildschirm oder um etwas, das die Plattform im vergangenen Herbst ausgeliefert hat, gilt das nicht: Eine Codebasis, zwei Stores, und die neueste Funktion kommt später an, weil die Brücke dorthin erst jemand schreiben muss.

Roberts App sind Listen und ein Ergebnis, also war Cross-Platform für ihn richtig. Für eine App, die aufwacht, wenn jemand am Übungsplatz ankommt, wäre dieselbe Entscheidung falsch gewesen, und die Falschheit wäre vier Monate lang nicht sichtbar geworden.

Eine Veröffentlichung

Das Bauen ist das erste von fünf Toren und das einzige aus Code

Die Breite jedes Bandes ist Roberts eigene Zählung für eine Veröffentlichung, also ist der Abfall die Aussage.

  1. Läuft auf dem eigenen RechnerDas Tor, an dem jede Anleitung endet, und das billigste der fünf100
  2. Kommt durch die PrüfungBeim ersten Mal abgelehnt wegen einer Berechtigung, die an der Tür verlangt wurde70
  3. Im Store gefundenEin Eintrag ist ein Suchergebnis, bevor er eine App ist35
  4. InstalliertWo die meisten Messungen aufhören, und wo noch nichts passiert ist20
  5. Ein zweites Mal geöffnetDie erste ehrliche Zahl, und die, die der vergessene Bogen zerstört hat5

Die Zahlen sind Roberts eigene Zählung einer ersten Veröffentlichung, auf hundert normiert, und keine Branchenzahl. Nicht abgebildet ist das Tor davor: In der EU steht seit Februar 2025 vor dem ersten Einreichen die Prüfung der Anbieterangaben, und die kostet keinen Tag, sondern eine Entscheidung über die eigene Anschrift.

Der Store: Prüfung, Name und Anschrift

Eine App auszuliefern ist kein Deployment. Es gibt eine Prüfung, sie ist eine Warteschlange, und eine Ablehnung setzt Sie ans Ende der Prüfschlange. Eine unbedachte Einreichung kostet also Tage und nicht die zehn Minuten, die das Beheben dauert. Die häufigen Ablehnungsgründe sind grob: eine fehlende Datenschutzangabe, ein Zugang, durch den die prüfende Person nicht hindurchkommt, oder eine Berechtigung, die die App verlangt und nie sichtbar benutzt.

Roberts Zahlen für seine erste Veröffentlichung, auf hundert normiert, sagen, wo eine Veröffentlichung tatsächlich verloren geht. Von 100 Fassungen, die auf seinem Rechner liefen, kamen 70 durch die Prüfung, 35 wurden von jemandem im Store gefunden, 20 installiert und 5 ein zweites Mal geöffnet. Der größte einzelne Verlust liegt zwischen installiert und ein zweites Mal geöffnet, und genau dort hat der vergessene Bogen gewirkt.

Hier steht der Stillstand, und in Deutschland ist er nicht die zweite Plattform. Es ist der Eintrag im Store selbst. Seit dem 17. Februar 2025 stehen Name und Anschrift des Anbieters im EU-Store, weil das Gesetz über digitale Dienste die Händlerangaben verlangt und die Stores sie seither prüfen. Wer als Privatperson veröffentlicht, veröffentlicht seine Wohnanschrift. Robert hat vier Monate nicht eingereicht, und der Grund war nicht die App.

Die Antwort darauf ist unangenehm kurz. Entweder eine ladungsfähige Anschrift, die nicht die eigene Wohnung ist, oder ein Kleingewerbe mit einer Geschäftsadresse. Beides ist ein Nachmittag im Rathaus, und beides ist besser als vier Monate im Ordner. Wie sich die App danach trägt, entscheidet über ihren Aufbau und nicht nur über ihre Abrechnung, und das steht unter Erlösmodelle.

Werkzeuge, und was sie hier kosten

Xcode ist der einzige Weg, für iOS zu bauen, und es setzt einen Mac voraus. Das ist eine Hardwareentscheidung, die ein Programm für Sie trifft, und sie gehört vor den Anfang und nicht danach. Android Studio baut für Android auf allen drei Schreibtischsystemen, ist kostenlos und hat Eclipse mit dem Android-Plugin abgelöst, das Anleitungen vor etwa 2015 noch zeigen.

Die Programme sind gratis, das Veröffentlichen ist es nicht. Im September 2026 kostet das Entwicklerprogramm von Apple 99 € im Jahr, die einmalige Registrierung bei Google 25 €. Das ist die einzige feste Ausgabe in diesem Thema, und sie ist der Grund, warum eine App länger im Ordner liegt als eine Webseite.

Für den gemeinsamen Weg sind Flutter und React Native die beiden ernsten Möglichkeiten, und sie teilen sich danach, was schon da ist: React Native, wenn ohnehin JavaScript geschrieben wird, Flutter, wenn nicht und wenn lieber eine Sache gelernt wird, die sich auf beiden Seiten gleich verhält. Abgelöst haben beide die frühere Machart, eine Webseite in eine App-Hülle zu stecken, die Benutzer zuverlässig spüren.

Ein Assistent im Editor schreibt die Zustandsverwaltung mit remember hin, weil sie in den meisten Beispielen so dasteht, und die Beispiele sind kurz und werden nie unterbrochen. Bleibt die Frage, wie sich dieselbe Aufgabe stellt, wenn das Gerät nicht in einer Jackentasche liegt, sondern ein Browser auf einem Schreibtisch ist. Das ist Webentwicklung, und was beide Wege darunter teilen, steht in Programmiersprachen.

Daneben

Darüber