Die Entwicklung plattformübergreifender Anwendungen gewinnt zunehmend an Bedeutung, insbesondere für Software, die auf verschiedenen Betriebssystemen wie Windows, macOS und Linux konsistent funktionieren soll. Kotlin Multiplatform bietet Entwicklern eine moderne und effiziente Möglichkeit, gemeinsame Codebasis zu erstellen und native UI-Komponenten auf mehreren Plattformen zu nutzen. Doch die Veröffentlichung solcher Anwendungen stellt häufig eine Herausforderung dar, da verschiedene Betriebssystem-spezifische Anforderungen berücksichtigt werden müssen. Genau hier kommt das Packaging- und Veröffentlichungs-Tool Conveyor von Hydraulic ins Spiel. Es vereinfacht die Erstellung, Verteilung und Aktualisierung von Kotlin Multiplatform Desktop-Anwendungen maßgeblich.
Mit einem realen Anwendungsbeispiel, der Entwicklerproduktivitäts-App maxDEV, die für Mac, Windows und Linux verfügbar ist, lassen sich die Möglichkeiten von Conveyor praxisnah darstellen. Bei der Einrichtung der Veröffentlichung mit Conveyor ist die Konfiguration im Mittelpunkt. Die zentrale Datei conveyor.conf enthält alle notwendigen Parameter für den Verpackungsprozess, die Verteilung über GitHub Pages sowie für Plattform-spezifische Anforderungen wie die Apple-Notarisierung. Die Einbindung externer Scripte, beispielsweise zur Extraktion nativer Bibliotheken, erfolgt durch das Einbinden von öffentlich verfügbaren Konfigurationsdateien über URLs.
Die App-Konfiguration in der conveyor.conf definiert grundlegende Eigenschaften wie den Dateisystemnamen der Anwendung, den Anzeigenamen, Icons für unterschiedliche Plattformen und weitere Einstellungen. Besonders hervorzuheben ist die aggressive Update-Strategie, die für maxDEV gewählt wurde. Diese sorgt dafür, dass Aktualisierungen schnell und oft durchgeführt werden können, was ideal für eine App in der Entwicklungs- und frühen Verteilungsphase ist. Alternativ unterstützt Conveyor auch andere Update-Modi, unter anderem Hintergrundaktualisierungen, die für stabilere Produktversionen besser geeignet sind.
Ein weiterer wichtiger Aspekt ist die notarization für Apple-Anwendungen. Mac-Anwendungen müssen signiert und von Apple zertifiziert sein, um auf macOS verteilt und installiert werden zu können. Conveyor bietet hier eine nahtlose Integration, die es Entwicklern ermöglicht, App-spezifische Passwörter, Apple-ID und Team-IDs direkt in der Konfigurationsdatei zu hinterlegen, um den Signierungs- und Notarisierungsprozess vollautomatisch abzuwickeln. Dies erspart viel manuellen Aufwand und beschleunigt den Veröffentlichungsprozess erheblich. Die Integration von Conveyor in das Build-System erfolgt über Gradle-Plugins, wobei man Versionsmanagement über eine libs.
versions Datei steuert. In der Praxis wird das Conveyor-Plugin im Desktop-App-Module eingebunden, während im Root-Projekt nur eine Referenz ohne direkte Anwendung erfolgt. Die Desktop-Anwendung selbst wird über Compose Multiplatform definiert. Hier können die nativen Distributionen mit Zielformaten für verschiedene Betriebssysteme konfiguriert werden, etwa DMG für macOS, EXE und MSI für Windows sowie DEB und RPM für Linux. Signieren und Notarisieren sind in der Gradle-Konfiguration ebenfalls vorgesehen.
Das erlaubt beispielsweise die automatische Anwendung des Entwicklerzertifikats oder des Apple-Teams für das macOS-Paket. Dadurch ist sichergestellt, dass die erstellten Installationspakete den Sicherheitsanforderungen der jeweiligen Plattformen entsprechen. Für die Bereitstellung von Updates und den Download der Anwendung wird oft eine statische Website via GitHub Pages verwendet. Die in conveyor.conf definierte site.
base-url zeigt auf eine Download-Seite mit den neuesten Versionen und weiteren Informationen für Nutzer. Durch die OAuth-Authentifizierung und die Angabe des Branches lassen sich Release-Dateien automatisiert aktualisieren. Dies vereinfacht den kontinuierlichen Veröffentlichungsprozess erheblich und ermöglicht es Nutzern stets auf die aktuelle Version zuzugreifen. Die Dokumentation von Hydraulic ist umfassend und unterstützt Entwickler bei der Auswahl und Konfiguration der passenden Update-Strategie für ihre Anwendungen. So lassen sich Updates entweder aggressiv erzwingen, um rasche Verteilung sicherzustellen, oder dezent im Hintergrund einspielen, um den Nutzerfluss nicht zu stören.
Diese Flexibilität macht Conveyor besonders interessant für Projekte, die sich noch in der Entwicklung befinden oder im produktiven Zustand gepflegt werden. Der eigentliche Release-Prozess selbst basiert auf einem klar strukturierten Ablauf. Zunächst werden alle Codeänderungen finalisiert und die Versionsnummer in der Gradle-Konfiguration für die Desktop-Anwendung angepasst. Anschließend erfolgt der Paketierungsbefehl, der die Anwendung fertigstellt und alle nativen Komponenten in den entsprechenden Plattformformaten bereitstellt. Über Befehle wie "conveyor make site" werden die Download-Assets generiert, gefolgt von "conveyor make copied-site", womit die Dateien auf die Zielplattform (beispielsweise GitHub Pages) hochgeladen werden.
Die Nutzung von Conveyor bietet Entwicklern also eine stark automatisierte und Plattform-übergreifende Lösung für das Veröffentlichen von Kotlin Multiplatform-Produkten. Gerade für komplexe Projekte mit unterschiedlichen Zielplattformen erleichtert es nicht nur den Build- und Releaseprozess, sondern bietet auch eine umfassende Infrastruktur für die Nutzeraktualisierung und Vertrauensbildung durch Zertifizierung und Notarisierung. Für Entwickler, die Unterstützung rund um die Umsetzung und Optimierung ihrer Projekte mit Kotlin Multiplatform suchen, bieten spezialisierte Dienstleister und Consultants wertvolle Hilfestellung. Die Expertise in der Kombination aus Kotlin, Compose Multiplatform und Conveyor kann maßgeblich den Erfolg und die Qualität von plattformübergreifender Software beeinflussen. Zusammengefasst ist Hydraulic Conveyor ein leistungsfähiges Tool, das es ermöglicht, Kotlin Multiplatform Desktop-Anwendungen professionell und plattformgerecht zu verteilen.
Die unkomplizierte Integration in Gradle-Projekte, die vielfältigen Optionen für Packaging, Signierung, Notarisierung sowie die flexible Update-Verwaltung machen es zu einem unverzichtbaren Werkzeug für Entwickler, die auf einfache und dennoch skalierbare Weise hochwertige Software für mehrere Betriebssysteme ausliefern wollen. Die Verknüpfung mit etablierten Hosting-Diensten wie GitHub Pages sorgt darüber hinaus für ein schlankes und effizientes Distributionsmodell, das die Nutzerzufriedenheit durch verlässliche Updates erhöht.