🚀 El SDK oficial de Swift para Android ya está aquí en las previews diarias de Swift 6.3. Lo que empezó como parches aportados por la comunidad en 2015, se ha convertido en apps de producción descargadas millones de veces. Desde Spark hasta Flowkey, empresas llevan años compartiendo código Swift entre iOS y Android.
🔧 Swift compila directamente a código nativo en Android usando LLVM, igual que en iOS. Esto significa rendimiento comparable a C/C++ con el Android NDK, pero con las garantías de seguridad y ergonomía de Swift. Tu código incluye el runtime de Swift con Foundation y Dispatch listos para funcionar.
🔗 La clave está en la interoperabilidad con Java mediante JNI (Java Native Interface). El proyecto swift-java incluye dos herramientas fundamentales: jextract para generar bindings que permiten llamar Swift desde Java, y wrap-java para consumir APIs de Java desde Swift. Todo automático.
💡 El modo JNI de jextract, implementado este verano en Google Summer of Code, permite compatibilidad con Android. Antes solo funcionaba con la API FFM (Foreign Function and Memory) que requiere JDK 22+. Ahora puedes generar wrappers automáticos incluso para versiones antiguas de Android usando JNI.
📱 Casos reales en producción: Spark comparte su núcleo entre iOS, Android, macOS y Windows. Flowkey lleva casi una década usando Swift en su app educativa de piano. MediQuo y Naturitas usan Swift en producción. Todas estas apps suman millones de descargas.
⚙️ El patrón es claro: la lógica de negocio, algoritmos y modelos de datos van en el código Swift compartido. La UI se implementa de forma nativa en cada plataforma: SwiftUI/UIKit en iOS, Android UI Toolkit en Android. Readdle demostró que esto funciona manteniendo Spark en cuatro plataformas distintas.
🎯 Swift en Android ahora soporta versionado de API con @available y #available, igual que en iOS. Puedes usar APIs específicas de Android 33+ con comprobaciones en tiempo de compilación y ejecución, manteniendo compatibilidad hacia atrás hasta Android 28 (API nivel 28).
@available(Android 33, *)
func useNewFeature() {
// Código que solo funciona en Android 33+
performBacktrace()
}
func main() {
#if os(Android)
print("Ejecutando en Android 28+")
if #available(Android 33, *) {
useNewFeature()
} else {
useLegacyImplementation()
}
#endif
}
🛠️ El grupo de trabajo de Android está trabajando activamente en debugging mejorado, integración con IDEs como VS Code y Android Studio, y workflows de GitHub Actions que permiten compilar y ejecutar tests en emuladores Android. La comunidad crece y busca nuevos contribuidores.
👨💻 No es teoría: es código real sirviendo a usuarios reales. Empresas como Readdle abrieron el camino hace años con toolchains personalizados. Ahora el SDK oficial democratiza el acceso. Si tienes lógica Swift que quieres llevar a Android, este es el momento. ¿Te animas a probarlo?


Deja un comentario