Capacitor oder Cordova: Welche Plattform sollten Entwickler webbasierter Mobilapps wählen?

ÜberKreuz Christian Liebel  –  9 Kommentare

Wer webbasierte Anwendungen für Android und iOS schreibt, hat die Qual der Wahl: Mit Capacitor und Cordova gibt es zwei Ansätze, die zum selben Ziel führen. Zeit für einen Vergleich der beiden Cross-Plattform-Frameworks.

Das Framework Apache Cordova, auch unter dem Namen PhoneGap bekannt, bringt seit über einer Dekade zuverlässig Web-Apps auf Mobilgeräte. Mit Capacitor gibt es einen Herausforderer, hinter dem mit Ionic ein Unternehmenssponsor steht. ÜberKreuz stellt die beiden Plattformen vor und gibt eine Empfehlung ab, welcher Ansatz nach Meinung des Autors gegenwärtig zu bevorzugen wäre.

Apache Cordova: Cross-Plattform-Apps als Buildartefakte

Cordova ist ein Community-Projekt der Apache Software Foundation (ASF). Es handelt sich dabei um den technischen Kern des Frameworks PhoneGap, das Adobe im Jahr 2011 gekauft hatte. Während Adobe PhoneGap als kommerziellen Dienst mit einigen Mehrwertangeboten wie einem Cloud-basierten Build-System betrieb, wurde der Unterbau quelloffen verfügbar gemacht und an die ASF übergeben. Im August 2020 kündigte Adobe an, PhoneGap einzustellen und sich nicht mehr an der Weiterentwicklung von Cordova zu beteiligen. Damit liegt die Wartung der Software nun bei der Community.

Bei Cordova gibt es zwei wichtige Konzepte: Plattformen und Plug-ins. Die Plattform stellt den portablen, webbasierten Quelltext auf einem bestimmten nativen Betriebssystem zur Verfügung, zum Beispiel Android oder iOS. Es werden auch weitere Plattformen wie macOS, Windows oder Electron unterstützt. Die Plattform greift auf die vom Betriebssystem bereitgestellte Web-View zurück und bettet die Anwendung darin ein. Daneben gibt es Plug-ins, die der Webanwendung den Zugriff auf beliebige native Schnittstellen erlauben. Das Plug-in enthält dabei (je Zielplattform) nativen Quelltext und macht diesen in JavaScript verfügbar.

Die grundlegende Philosophie bei Cordova ist, dass das komplette native Plattformprojekt als Artefakt eines Build-Vorgangs entsteht; für Entwickler verhält es sich als Black Box. Sämtliche Modifikationen werden in einer XML-Konfigurationsdatei vorgenommen und die Plattformprojekte daraus generiert. Die nativen Quelltexte sollen weder im Repository eingecheckt noch in irgendeiner Form verändert werden, da die Anpassungen beim nächsten Build wieder hinfällig wären.

Daten der App-Analyse-Plattform appfigures zeigen, dass im November 2021 rund 18 Prozent der App-Store-Anwendungen und Google-Play-Anwendungen auf Cordova setzen (über alle Anwendungskategorien hinweg, einschließlich Spielen). Das macht die Plattform im App Store zum zweithäufigsten und im Play-Store zum dritthäufigsten eingesetzten Entwicklungs-SDK. Auf Cordova setzt etwa die Selbstachtungs-App Sanvello (4,8 Sterne bei 17.300 Bewertungen im App Store).

Ein Screenshot der Analyseplattform appfigures, der die meistverwendeten Entwicklungs-SDKs getrennt nach Store zeigt.
Cordova spielt bei den meistverwendeten SDKs auf den vorderen Plätzen mit (Screenshot: appfigures.com, Stand: 21. November 2021)

Capacitor: Ionic fordert Cordova heraus

Capacitor ist im Jahr 2019 erstmals erschienen. Hinter Capacitor steckt das Unternehmen Ionic, das auch ein gleichnamiges Cross-Plattform-Framework herausgibt und weitere Dienste rund um die plattformübergreifende Entwicklung anbietet. Bei Capacitor handelt es sich vergleichbar zu Cordova um die technische Basis, um Webanwendungen auf nativen Plattformen zur Verfügung stellen zu können. Das Framework Ionic stellt darüber hinaus Steuerelemente in den nativen Plattformstilen von Android und iOS bereit, damit diese Anwendungen so aussehen und sich so verhalten wie ihre nativen Gegenstücke. Weitere Dienste wie Cloud-Builds oder Single Sign-on lassen sich kostenpflichtig bei Ionic abonnieren.

Der zentrale Unterschied zwischen Cordova und Capacitor besteht in der Philosophie, wie die nativen Plattformprojekte betrachtet werden: Bei Capacitor werden diese nicht als Build-Artefakt angesehen, sondern einmal generiert, in die Codebasis eingecheckt und dann direkt modifiziert. Damit haben Entwickler die volle Freiheit im Umgang mit dem nativen Projekt, müssen sich umgekehrt aber auch um dessen Wartung kümmern.

Plattformen und Plug-ins gibt es auch bei Capacitor: Als Ausgabeplattformen werden iOS, Android sowie Progressive Web-Apps unterstützt. Das Framework stellt für häufig verwendete native Schnittstellen eigene Plug-ins zur Verfügung und kümmert sich um deren Wartung. Außerdem ist Capacitor mit den meisten Cordova-Plug-ins kompatibel und kann somit auch auf diese zurückgreifen. Installierte Plug-ins findet Capacitor übrigens automatisch, wohingegen diese bei Cordova in der Konfiguration bekannt gemacht werden müssen.

Capacitor rangiert laut den Daten von appfigures aktuell auf Platz 20 (unter einem Prozent der Anwendungen) im App Store beziehungsweise Platz 12 (etwa 1 Prozent der Anwendungen) in Google Play unter den meistverwendeten Development-SDKs. Auf Capacitor setzt etwa die Fitness-App Sworkit (4,7 Sterne bei 27.000 Bewertungen im App Store).

Für welchen Ansatz sollten sich Entwickler entscheiden?

Cordova und Capacitor lösen zunächst einmal dasselbe Problem, nämlich die Ausführung einer Webanwendung auf einer nativen Plattform. Capacitor entstand dabei auf Basis der Erfahrungen des Ionic-Teams mit Cordova. Zugleich steht mit Ionic ein Unternehmenssponsor hinter Capacitor, der sein Geschäftsmodell darauf aufbaut. Weiterhin reagiert Capacitor durch die Bereitstellung einer PWA-Ausgabeplattform auf aktuelle Trends.

Das Cordova-Ökosystem scheint überdies in die Jahre gekommen. Einige von der Community bereitgestellte Plug-ins sind veraltet und werden nicht mehr gewartet. Auch JavaScript hat sich in der Zwischenzeit weiterentwickelt: Manche der Cordova-Plug-ins stellen globale Methoden bereit, die von Capacitor veröffentlichten Schnittstellen setzen hingegen auf ECMAScript-Module. Das bedeutet jedoch nicht, dass die Entwicklung von Cordova eingestellt ist, außerdem vereint Cordova derzeit noch den größeren Marktanteil auf sich.

Im täglichen Gebrauch fühlt sich der von Capacitor gewählte Ansatz, die nativen Plattformprojekte in das Repository einzuchecken, deutlich besser an. Manchmal braucht es bei Cordova-Projekten separate Build-Skripte, um String-Replacements an den Quelldateien der nativen Projekte durchzuführen. Umgekehrt bedeutet der Capacitor-Ansatz jedoch auch einen erhöhten Wartungsaufwand bei Plattformupdates.

Zusammengefasst dürfte Capacitor aktuell die naheliegendere Wahl für die meisten Entwicklerteams sein. Das Framework ist deutlich moderner und der Unternehmenssponsor dürfte die kontinuierliche Weiterentwicklung auf absehbare Zeit sichern.