
最近的夜间构建版 Swift SDK for Android 发布,旨在帮助开发者将 Swift 包迁移到 Android 平台,可以更轻松地在不同平台之间共享代码。尽管该 SDK 仍处于预览阶段,但已有超过 25% 的 Swift 包索引中的包能够成功编译为 Android 版本。
Swift SDK for Android 的核心包括一个为 Android 平台量身定制的 Swift 工具链,即编译器和在 Android 上运行的 Swift 标准库的实现,以及一组绑定,用于从 Swift 访问 Android API。Swift 工具链使用 swift-java-project 来实现 Java/Swift 互操作性,能够创建共享对象,这些对象会被链接到 .apk 存档文件中,并通过 JNI 进行访问。
Swift SDK for Android 采取了一种开放式的 UI 方法,没有使用单一的 UI 框架,而是选择支持现有的多种框架,特别是 Android 的原生工具包,如 Jetpack Compose 和经典的基于 XML 的系统、Flutter 的 UI 引擎,以及第三方桥接解决方案,如 Skip。Swift Android 团队没有明确提到的另一种可能的方法是使用 OpenGL、Vulkan 或其他渲染引擎在 Swift 中实现 UI,然后通过 NativeActivity 将其集成到 Android 应用中。
特别是 Skip 框架通过将其桥接到 Jetpack Compose,重新实现了适用于 Android 的 SwiftUI。这种方法为 iOS 开发者提供了一种无缝的方式,让他们可以在同一个代码库中编写应用的业务逻辑和 UI,且几乎无需额外的工作量。
SwiftCrossUI 是一个开源的替代方案,它为 macOS、Linux 和 Windows 提供了类似 SwiftUI 的 API,并且正在逐步增加对 Android 的初步支持 。
尽管使用 Swift 同时开发 iOS 和 Android 应用听起来很有吸引力,但正如 andrekandre 在 Hacker News 上指出的,创建出色的跨平台应用不仅仅是工具链支持和原生工具包的问题:
我之前也尝试过这条路,说实话,最大的问题是开发体验(iOS 开发者难以轻松调试,模型之间存在不匹配,例如 Kotlin 的异常无法从 Swift 中捕获)。最后,即使是 Kotlin 多平台也不等同于 Android 上的 Kotlin,所以在某种程度上,你仍然是在引入第三种语言……
Swift SDK for Android 的首次发布大约在苹果宣布在 Swift 项目内成立 Android 工作组 六个月后,该工作组的目标是确保 Swift 可以编译为 Android,无需依赖非官方分支,同时增强 Swift 的标准库,以更好地兼容 Android API。
在 Swift SDK for Android 发布之前,开发者可以使用第三方解决方案,如 Scade.io,来编译他们的 Swift 代码,使其能在 Android 上运行。Scade 基于 Swift4j 构建,主要专注于非 UI 应用逻辑的开发。
对于希望将应用移植到 iOS 的 Android 开发者来说,一个更成熟的选择是 Kotlin Multiplatform with Jetpack Compose Multiplatform,这一方案此前 InfoQ 曾广泛报道过。
【声明:本文由 InfoQ 翻译,未经许可禁止转载。】
查看英文原文:https://www.infoq.com/news/2025/10/swift-sdk-android/








评论