Entwicklung von Apps für watchOS 2, Teil 1
Das erste Update des der Apple Watch zugrundeliegenden Betriebssystems watchOS 2 stellt eine Vielzahl an neuen Funktionen bereit und verbessert die allgemeine Performance und Stabilität des Systems. Darüber hinaus weitete Apple die für App-Entwickler zur Verfügung stehenden Frameworks aus und überarbeitete die grundlegende Architektur von watchOS-Apps.
![Entwicklung von Apps für watchOS 2, Teil 1](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/8/5/0/9/4/1/ir_engine-f9b12f4187e2f625.jpeg)
(Bild: dpa, Andrew Cowie)
- Thomas Sillmann
Die Computeruhr Apple Watch ist seit über einem Jahr erhältlich. Zusammen mit ihr veröffentlichte Apple die erste Version des Betriebssystems watchOS, das ausschließlich auf der Apple Watch läuft und eine Umgebung zur Verfügung stellt, die speziell auf die Anforderungen und technischen Gegebenheiten der Smartwatch angepasst ist.
Im Herbst letzten Jahres veröffentlichte Apple das erste große Software-Update für die Apple Watch: Die Veränderungen bei watchOS 2 sind an manchen Stellen so tiefgreifend, dass manche Entwickler eine bestehende App für watchOS 1 für die zweite Version lieber gänzlich neu entwickelten, statt mühsam den bisherigen Code Schritt für Schritt an watchOS 2 anzupassen.
Artikel zum Thema auf heise Developer:
Tatsächlich ist es in manchen Fällen leichter, eine App für watchOS 2 von Grund auf neu zu entwickeln und dabei von Beginn an auf die neue Architektur des Betriebssystems zu achten, statt ein bestehendes Projekt zu portieren.
Konnten Entwickler bisher ihre für watchOS 1 entwickelten Apps auch problemlos unter watchOS 2 ausführen, schob Apple dem nun einen Riegel vor. Seit Juni 2016 ist nur noch möglich, explizit für watchOS 2 entwickelte und darauf lauffähige Apps im App Store einzureichen. Spätestens mit dieser jüngsten Ankündigung rückte watchOS 2 noch einmal in den Fokus vieler Entwickler, die zwar bereits eine App für watchOS 1 anboten, sie bisher aber noch nicht für watchOS 2 optimiert haben.
Dieser und ein bald folgender Artikel zeigen im Detail, inwieweit sich die Architektur von Apps zwischen watchOS 1 und watchOS 2 unterscheidet und gibt einen Überblick über die neuen Funktionen und Möglichkeiten, die dank neuer Frameworks und APIs Einzug in watchOS-Apps halten können. Auch gibt es einen Ausblick darauf, inwieweit die Plattform für Entwickler bisher interessant war und in Zukunft sein wird.
Geänderte Architektur
Die größte Veränderung zwischen watchOS 1 und watchOS 2 liegt in der grundlegenden Architektur. Eine watchOS-App ist zunächst einmal immer Teil einer existierenden iPhone-App; komplett autarke Apps für watchOS, die ohne iPhone-Pendants auskommen, sind bisher nicht möglich. Die zugrunde liegende iPhone-App verfügt über eine Extension für die Apple Watch – die sogenannte WatchKit Extension. Sie enthält die gesamte Logik der watchOS-App und setzt bereits auf dem WatchKit-Framework auf, das als Grundlage für die Entwicklung von Apps für die Smartwatch dient. Die WatchKit-App zu guter Letzt enthält lediglich das User Interface und sonstige lokale Ressourcen, die direkt auf der Uhr gespeichert werden.
Bei watchOS 1 lebte die Extension noch auf dem iPhone. Das bedeutete, dass die Apple Watch nur die WatchKit-App mit dem User Interface enthielt, die gesamte Logik der App aber auf dem iPhone lag und auch dort ausgeführt wurde. Betätigte man so einen Button im Interface der WatchKit-App, rief diese die WatchKit Extension auf dem iPhone auf und ließ dort die zugrunde liegende Logik ausführen, um anschließend wieder Rückmeldung an die WatchKit-App zu geben.
Grund für diese Entkopplung der Extension von der Apple Watch waren wohl Befürchtungen, dass die Akkulaufzeit zu sehr leide, wenn die Smartwatch alle Operationen einer App selbst durchführen muss. So musste sich das iPhone mit allen Berechnungen und sonstigen Aktionen abmühen, während die Uhr lediglich das Interface darstellte. Kehrseite der Medaille war allerdings eine oftmals schlechte und langsame Performance von watchOS-Apps. Da der gesamte Code entfernt und nicht nativ auf der Apple Watch ausgeführt wurde, kam es regelmäßig zu Verzögerungen und langen Ladebildschirmen.
Mit watchOS 2 hat sich die Architektur von Watch-Apps grundlegend geändert. Bei watchOS 2 lebt die WatchKit Extension nicht länger auf dem iPhone, sondern direkt auf der Uhr. Damit ist es erstmals möglich, vollständig autarke Apps für sie zu entwickeln. Die Kommunikation mit dem iPhone ist optional noch möglich und in manchen Fällen sogar unabdingbar. Für watchOS 2 angepasste Apps reagieren schneller und starten deutlich flotter. Aufgrund weiterer Optimierungen im Betriebssystem gibt es dabei keine Probleme mit einer geringeren Akkulaufzeit der Apple Watch; im Gegenteil konnte Apple diese mit watchOS 2 sogar noch ein wenig weiter verbessern.
Für Entwickler bedeutet dieser Schritt aber womöglich ein hohes Maß an Mehrarbeit, um watchOS-1-Apps unter watchOS 2 zum Laufen zu bringen. Das liegt darin begründet, dass sich nicht alle Frameworks, die auf dem iPhone zur Verfügung stehen, auch auf der Apple Watch nutzen lassen. Ein Beispiel dafür ist etwa das CloudKit-Framework, das essenziell für die Nutzung der iCloud in eigenen Apps ist. Unter watchOS 1 ließ es sich noch direkt innerhalb der WatchKit Extension verwenden, um Daten aus der iCloud zu lesen und darin zu speichern; schließlich wurde die WatchKit Extension bis dahin ja auf dem iPhone ausgeführt. Da aber die WatchKit Extension mit watchOS 2 direkt auf die Smartwatch wandert und sich dort CloudKit nicht nutzen lässt, ist Code, der für iCloud-Funktionen zuständig ist, komplett neu zu schreiben.
Verständlicherweise können derartige Probleme schnell dazu führen, dass ein gesamtes Projekt in vielen Teilen unbrauchbar wird. Einige Entwickler haben sich daher im Zuge von watchOS 2 zu einer kompletten Neuentwicklung ihrer watchOS-Apps entschieden; selbst wenn sie eine voll funktionsfähige Version für watchOS 1 besaßen. Dabei ist von Fall zu Fall zu prüfen, ob ein Refactoring eines bestehenden watchOS-1-Projekts ausreicht oder eine Neuentwicklung in Angriff genommen werden sollte, da die Entscheidung letzten Endes davon abhängt, ob und in welchem Maße unter watchOS-1-Frameworks und -Funktionen verwendet wurden, die unter watchOS 2 aufgrund der geänderten Architektur nicht mehr länger zur Verfügung stehen.
Für Entwickler gilt hier, zunächst einmal ein womöglich bestehendes watchOS-1-Projekt in der Ausführung unter watchOS 2 zu testen. Bei der Arbeit mit Techniken, die auch auf der Apple Watch zur Verfügung stehen, sollten keine nennenswerten Probleme auftreten. Andernfalls muss man prüfen, wie tiefgreifend sich auftretende Probleme auf das watchOS-App-Projekt auswirken. Entwickler müssen dann entscheiden, ob es sich lohnt, das bestehende Projekt zu überarbeiten, oder ob womöglich der Aufwand letzten Endes geringer ausfällt, eine Neuentwicklung in Angriff zu nehmen.