Swift on Android: Full Native App Development Now Possible
What SwifDroid / Swift Stream IDE Enables
- Lets developers write full native Android apps entirely in Swift, avoiding XML, Java, and Kotlin.
- Framework handles lifecycle, activities/fragments, and Android/AndroidX/Material widgets; IDE generates a conventional Gradle project usable in Android Studio.
- Target audience highlighted: Swift-heavy teams wanting Android without switching languages, or iOS‑first products needing “checkbox” Android support.
JNI, Gradle, and Tooling Details
- Java/Kotlin interop is done via a dedicated
jni-kitlibrary plus auto‑generated Java/Kotlin glue (e.g., for Activities). - Alternative Swift–Java options like
swift-java(with macros/Panama) are mentioned. - Gradle is still the underlying build system; SwifDroid wires dependencies automatically so most users don’t touch Gradle directly.
- Some see Gradle as a nightmare; others argue it’s simpler than iOS/Xcode’s project and dependency management.
Positioning vs Other Cross‑Platform Approaches
- Explicitly not a cross‑platform UI toolkit: it’s Android‑native UI written in Swift, unlike Flutter, React Native, or Skip/SwiftCrossUI.
- Compared to Kotlin Multiplatform and Skip: those aim at shared or translated UI; SwifDroid focuses on Android‑only but with full native control from Swift.
Language & Framework Debates (Swift, Kotlin, Dart)
- Large side discussion comparing Dart/Flutter, Kotlin/KMP, and Swift:
- Some strongly prefer Kotlin Multiplatform over Flutter; others the opposite.
- Opinions on Dart range from “best modern app language” to “clunky and aged”; criticisms include JSON serialization and web canvas rendering.
- Kotlin is praised by some, but others find its syntax and ergonomics “off” compared to Swift.
- Swift is seen by some as painful post‑Swift 6; others are surprised by that characterization.
Cross‑Platform vs Native: Productivity vs UX
- Several commenters argue shared language rarely delivers the expected productivity gain; platform APIs, lifecycle, and idioms dominate the learning curve.
- Others value cross‑platform stacks for synchronized feature rollout and consistent UX across platforms, citing React Native’s fast refresh, deep‑linking, OTA updates, and easy native escape hatches.
- There’s broad agreement that serious apps often hit abstraction leaks and need platform‑specific code.
Skepticism, Limitations, and Open Questions
- Concern that Android APIs are mostly Java‑exposed, so Swift layers must go through JNI and will be inherently leaky.
- Questions raised about C/C++ interop and SwiftPM/Bazel dependency handling are not deeply answered in the thread.
- One commenter notes the site’s cookie consent likely doesn’t meet EU requirements.