Eine häufige Sorge der Entwickler von Android Apps ist die Frage nach der Kompatibilität mit neuen Versionen. Je nachdem, wann man seine neue App veröffentlicht, dauert es nämlich unter Umständen nicht mehr lange, bis auch Android eine neue Version seines Betriebssystems veröffentlicht. Bedeutet das wieder viele Stunden Entwicklungsarbeit?

Forward- und Backward Compatibility mit Android

Es dürfte viele Programmierer freuen, dass Android großen Wert auf die Forward- und die Backward Compatibility seines Betriebssystems legt. Das heißt, dass man bei Android alles dafür tut, dass sowohl neue als auch alte Apps auf dem Betriebssystem laufen, ohne das es zu Problemem kommt. In der Regel muss eine App schon sehr alt und lange Zeit ohne Update sein, damit sie aus dem Bereich der Kompatibilität fällt. Entscheidend für diese Kompatibilität nach vorn wie auch zurück sind die Funktionen compileSdkVersion, minSdkVersion und targetSdkVersion.

Die compileSdkVersion

Mit der Funktion compileSdkVersion kann der Entwickler festlegen, mit welcher API eine App kompiliert wird. Da complieSdkVersion ausschließlich zur Zeit der Kompilierung interessant ist, hat die hier festgelegte API Version keinen Einfluss und keine Auswirkungen auf die Funktionsweise der App. Generell es zu empfehlen, immer mit der neusten API Version zu entwickeln und zu kompilieren. Darüber hinaus ist zu bedenken, dass einige Dependencies immer die aktuelle API Version voraussetzen, damit die Dependencies im vollen Umfang genutzt werden können.

Die minSdkVersion

Während die compileSdkVersion die neuste verfügbare API bestimmt, setzt der Entwickler mit minSdkVersion die untere Grenze der zu verwendenden API. Der Entwickler teilt mit diesem Wert zum Beispiel dem Google Play Store mit, ob eine App auf dem Gerät des Users ausgeführt werden kann oder nicht. Verwendet der Nutzer also zum Beispiel ein Gerät, welches eine Android Version benutzt, die unter dem minSdkVersion Wert liegt, kann die App auf diesem Gerät nicht installiert werden. Dabei ist wichtig zu bedenken, dass auch Dependencies und Support Libraries Werte für die minSdkVersion haben können. In diesem Fall kann der minSdkWert der App grunsätzlich erst einmal nicht niedriger sein, als der minSdkVersion Wert der Dependencies. Zwar kann diese Regel mit der Funktion tools:overrideLibrary überschrieben werden. Dieses Vorgehen wird jedoch allgemein nicht empfohlen und bei einer Verwendung der Funktion sollten ausführliche Tests durchgeführt werden.

Doch für welche Version entscheidet man sich als minSdkVersion? Hier kann die Übersicht von Google Play Abhilfe schaffen. Man sieht dort schnell und auf einen Blick die Besucher der letzten sieben Tage sowie deren verwendete Android Version. Das heißt, hier sieht der Entwickler seine potentiellen Kunden. Ob zusätzliche Versionen ebenfalls unterstützt werden sollen, ist eine persönliche Entscheidung, die im Rahmen von Tests und Aufwand genau abzuwägen ist.

Android-Fragentation

Die targetSdkVersion

Die letzte und interessanteste Funktion ist targetSdkVersion. Hier wird nämlich die eigentliche Forward Compatibility der App sichergestellt. Das wird erreicht, indem Verhaltens- oder Programmänderungen durch neue Versionen in der App nicht ausgeführt werden, bis die targetSdkVersion auf den neuen Wert verändert wird. Dank dieser Funktion kann in complileSdkVersion immer die neuste API für die Entwicklung festgelegt werden, ohne dass diese Einfluss auf den Programmablauf hätte. Änderungen in der App, die sich aufgrund einer Änderung der targetSdkVersion ergeben, werden in der Regel im Play Store und in der App Beschreibung angegeben. Da ein Update auf eine neue targetSdkVersion für den User in der Regel immer interessante Änderungen und Verbesserungen mit sich bringt, sollte der Entwickler das Update nicht verzögern. Dennoch sollte man auch kein vorschnelles Update auf eine neue Version erzwingen. Es ist in der Regel sicherer und besser, vorher ausführlich zu testen, um fehlerhafte Apps und verärgerte User zu vermeiden.

Fazit

Das richtige Setzen der compileSdkVersion, minSdkVersion, and targetSdkVersion ist wichtig bei der Entwicklung. Falsche Einstellungen oder unachtsame Änderungen können zu ernsten Folgen führen und zur Folge haben, dass die App unter Umständen nicht mehr richtig läuft.