Eine Anekdote zur Versionierung unter Android

Bei Versionsnummern von Apps im Speziellen oder Software im Allgemeinen kann es schon einmal zu hitzigen Diskussionen kommen. Ich erinnere mich gerne daran wie 2010 ein Aufschrei durch die Community ging, als Mozilla seinen Release-Zyklus verkürzte (auf ca. 6 Wochen) und seine Versionierung an Chrome „anpasste“. Eigentlich eine Kleinigkeit, die für die Nutzer weder einen Unterschied in der Handhabung noch in der Ausgestaltung der Software mit sich brachte. Der Aufschrei war allerdings so laut, dass irgendwann die Versionsnummer vor den Nutzern verborgen werden sollten. Ihr versteht also, dass das Thema durchaus einer größeren Betrachtung bedarf, als man manchmal denken mag. Diese Betrachtung möchten wir heute für die Versionierung unter Android vornehmen.

Wie funktioniert Versionierung unter Android?

Zuerst einmal gilt es eine wichtige Unterscheidung zu treffen: Und zwar die zwischen Versionsname und Versionscode.

Der Versionsname (versionName) einer Android-App ist nur ein String, den man dem Nutzer als Versionsnummer anzeigen kann, der aber keinerlei Relevanz für das Funktionieren der App hat. Üblicherweise wird er in dieser Form angegeben: (major).(minor).(point)
Genauere Infos findet Ihr auf dieser Seite mit Regeln zur Semantic Versionierung.
Der Versionscode (versionCode) ist die interne Versionsnummer. Je höher diese Nummer ist, desto neuer ist die App. Dementsprechend lässt sich ein Update einer App nur dann durchführen, wenn die neue Version einen höheren versionCode hat als die im Store.

Eine Anekdote zu den Folgen undurchdachter Versionierung

Nehmen wir einmal an, Entwickler XY setzt den versionCode für lokale Debug-Builds aus irgendeinem Grund auf MAXINT – in etwa so: versionCode = Integer.MAX_VALUE (2,147,483,647)

Ein Beispiel zur Versionierung unter Android

Das fällt im Projektteam von Entwickler XY erst einmal nicht auf und behindert die Entwicklung der App auch nicht. Wenn Entwickler XY aber damit ein Release für den Play Store veröffentlicht, erfährt er eine böse Überraschung: Seine App, in die er viel Arbeit, Zeit und Liebe gesteckt hat, lässt sich nicht mehr updaten. Ein Fehler, der nicht so einfach zu beheben ist und nicht nur für unseren Entwickler XY äußerst unangenehm ist, sondern auch für das betroffene Unternehmen einen nur schwer zu ermessenden Schaden mit sich bringt.

Bis vor kurzem wurde Entwickler XY beim Hochladen einer App mit einem solchen versionCode in den Play Store nicht gewarnt. Mittlerweile wird er immerhin auf seinen Fehler hingewiesen und er muss bestätigen, dass er sich der Konsequenzen bewusst ist.

Ein Beispiel zur Versionierung unter Android

Außerdem wird Entwickler XY in der Dokumentation zum versionCode inzwischen wie folgt auf diese Falle hingewiesen: „Warning: The greatest value Google Play allows for versionCode is 2100000000.“

Was kann man tun, wenn man in der Update-Sackgasse gelandet ist?

Ganz ehrlich, viel kann Entwickler XY in dieser Situation nicht tun. Was Entwickler XY tun kann, ist, eine neue App unter dem gleichen Namen, aber natürlich mit einem neuen (besser durchdachten) versionCode hochzuladen. Allerdings hat Entwickler XY dann plötzlich zwei Apps mit gleichem Namen im Store, was eine Verwirrung der Nutzer und Erschwerung der Auffindbarkeit im App-Store mit sich bringt. Die „alte“ App einfach zu löschen, ist auch keine wirkliche Möglichkeit, da dadurch bestehende Nutzer irritiert werden. Falls Entwickler XY schon vorher Push-Notifications in die App eingebaut hat, kann er versuchen, über dieses Mittel (oder über E-Mail, sofern ein Log-In besteht) mit den Nutzern in Kontakt zu treten und ihnen die Lage kurz und klar zu erklären. Aber auch so kann Entwickler XY nicht sicherstellen, dass er alle Nutzer erreicht. In einem solchen Fall gibt es keine einfache Lösung – einen Tod muss Entwickler XY sterben.

Und die Moral der Anekdote?

Einfacher kann ich es nicht sagen: Checkt Eure Versionierung und stellt sicher, dass ein solcher Fall ausgeschlossen ist.

Wie sieht es bei Euch aus? Ist Euch schon ein ähnlicher Fall begegnet? Wie handhabt Ihr es mit der Versionierung unter Android?

Anzeigen von 0 Kommentaren

Hinterlasse einen Kommentar