19 Punkte von GN⁺ 2024-08-30 | 3 Kommentare | Auf WhatsApp teilen
  • Skip ist ein Tool, mit dem sich die Entwicklung von Swift-Apps auf Android ausweiten lässt
  • Mit Swift und Xcode lassen sich native Apps sowohl für iOS als auch für Android entwickeln
  • So funktioniert Skip
    • Entwickelt man Swift- und SwiftUI-Apps in Xcode, wandelt das Skip-Xcode-Plugin diese in Kotlin und Jetpack Compose um
    • So lassen sich Bibliotheken oder ganze Apps für beide Plattformen entwickeln, ohne native Performance und Benutzeroberfläche einzubüßen

Vorteile von Skip-Apps

Wirklich nativ

  • Skip-Apps sehen nicht nur „wie nativ“ aus, sie sind tatsächlich nativ
  • Auf iOS kommen Swift und SwiftUI zum Einsatz, auf Android Kotlin und Compose

Vollständige Transparenz

  • Mit Skip ist jeder Teil der App für Entwickler einsehbar
  • Der Swift-Code kann direkt in Kotlin-Quellcode umgewandelt sowie geprüft und angepasst werden

Geringgewichtig

  • Mit SkipZero ist die iOS-App nicht vom Skip-Framework abhängig
  • Die Android-App benötigt nur einige Open-Source-Bibliotheken von Skip

Speichereffizienz

  • Da keine zusätzliche verwaltete Runtime erforderlich ist, sind Skip-Apps auf beiden Plattformen so effizient wie möglich
  • Auf iOS wird Bare Metal genutzt, auf Android ART-Bytecode

Ideale IDE

  • Die IDE von Skip ist Xcode, die beste Umgebung für die iOS-Entwicklung
  • Für Android-Anpassungen lässt sich der generierte Code direkt in Android Studio öffnen

Nahtlose Integration

  • Skip erzeugt standardmäßiges Kotlin und Compose, wodurch sich Android-Bibliotheken leicht integrieren lassen
  • Auch anderer Kotlin- und Java-Code kann direkt aufgerufen werden

Auf Open Source aufgebaut

  • Der Transpiler von Skip ist nur die halbe Geschichte
  • Frameworks wie Foundation und SwiftUI, die die iOS-App-Entwicklung unterstützen, stehen dank kostenloser Open-Source-Implementierungen von Skip auch auf Android zur Verfügung

CI-freundlich

  • Skip wandelt auch Unit-Tests um
  • Tests lassen sich lokal oder remote ausführen, um auf allen Plattformen dieselbe Logik und Performance sicherzustellen

Ausstiegsmöglichkeit

  • Sowohl die Swift-Eingabe als auch die Kotlin-Ausgabe gehören dem Entwickler
  • Es besteht keine dauerhafte Abhängigkeit vom Skip-Transpiler

Zusammenfassung von GN⁺

  • Skip ist ein Tool, mit dem sich Swift-Apps auf Android ausweiten lassen, wobei native Performance und Benutzeroberfläche auf beiden Plattformen erhalten bleiben
  • Durch die Nutzung sowohl von Xcode als auch von Android Studio können Entwickler effizienter arbeiten
  • Auf Open Source basierend bietet es Transparenz und Anpassbarkeit
  • Es ist CI-freundlich und kann über Tests eine konsistente Performance über Plattformen hinweg sicherstellen
  • Ein Projekt mit ähnlicher Funktionalität ist Kotlin Multiplatform

3 Kommentare

 
ing03201 2024-08-30

Es wäre wirklich toll, wenn auch Code-Obfuskation unterstützt würde.

 
godrm 2024-08-30

Oh, interessant. Ich habe zwar noch überhaupt keine Ahnung, in welchem Umfang und auf welche Weise das umgesetzt wird, aber es wirkt wie ein waghalsiger und zugleich spannender Versuch.

 
GN⁺ 2024-08-30
Hacker-News-Kommentare
  • Erfahrungsbericht zur Portierung einer persönlichen App auf Android

    • Die iOS-App wird mit SwiftUI entwickelt; für die Portierung auf eine Android-Version wurden React Native, Ionic, Ignite usw. ausprobiert, was sich jedoch als schwierig erwies
    • Mit Skip war die Zufriedenheit sehr hoch, da sich Apps in einer einzigen Sprache schreiben lassen, während der Swift-Kontext erhalten bleibt
    • Plattformspezifischer Code lässt sich leicht schreiben, und die App kann schnell ausgeführt werden, ohne Android lernen zu müssen
    • Geplant ist, die gesamte App mit Skip zu entwickeln und in beiden App Stores zu veröffentlichen
  • Bedenken zu Skip

    • Fragen zur Open-Source-Lizenz (GPL vs. MIT)
    • Unklarheit darüber, wie Paketverwaltung und iOS/Android-Verzweigungen gehandhabt werden
    • Fragen dazu, wie Apple-Service-APIs unter Android behandelt werden
    • Bedarf an Beispielen für Werbung und In-App-Käufe
  • Fragen zur Abhängigkeitsverwaltung von Skip

    • Es besteht Unsicherheit, ob Swift-PM-Pakete in Android-Projekten transparent genutzt werden können
    • Außerdem stellt sich die Frage, ob Kotlin Swift-Bibliotheken transparent aufrufen kann
  • Meinungen zum Zielmarkt von Skip

    • Das Produkt wirkt wie eine Lösung vor allem für US- und europäische Unternehmen, die hauptsächlich iOS-Apps nach Android übertragen wollen
    • In anderen Regionen, in denen Android dominiert, gibt es bessere Frameworks wie Flutter, React Native und Kotlin MP
    • Es wird auf Probleme beim Transpilieren und auf Wartungsschwierigkeiten hingewiesen
  • Erfahrungen mit Code-Konvertierung durch ChatGPT und Claude

    • SwiftUI-Code wurde erfolgreich in Kotlin, Jetpack Compose und Material3 konvertiert
    • Der erzeugte Code funktionierte fast sofort; nur Anpassungen bei Styling und Themes waren nötig
  • Erfahrungsbericht mit Skip

    • Nach mehreren Monaten Nutzung zeigt sich: Es gibt eine Lernkurve, aber plattformübergreifende Probleme werden vollständig gelöst
  • Grenzen der Dokumentation und des Transpilierens bei Skip

    • Es wird gefragt, ob es Grenzen beim Transpilieren gibt, wenn SwiftUI oder andere Kernbibliotheken verwendet werden
    • Möglich sind ähnliche Probleme wie bei der schwierigen Xamarin-Entwicklung
  • Einschränkungen des Frameworks von Skip

    • Da die meisten iOS-Apps Frameworks der Apple-Plattform verwenden, könnte die minimale Implementierung von Skip eingeschränkt sein
    • Derzeit gibt es keine Implementierungen für StoreKit, WebKit, SafariServices, UserNotifications, CryptoKit usw.
  • Schwierigkeiten bei der Integration von Skip in bestehende Apps

    • Es wird gefragt, ob die Integration von Skip in bestehende SwiftUI- + UIKit-Apps schwierig ist
    • Es besteht Bedarf an Beispielen für kleine oder mittelgroße Apps, die auf Skip migriert wurden
  • Lösung von Performance-Problemen durch Skip

    • Es hilft erheblich dabei, Performance-Probleme von Cross-Platform-Frameworks zu lösen