Swift 构建 Android 应用?它来了

适用于 Android 系统的 Swift SDK 最近以 nightly 构建版本发布,该 SDK 旨在帮助开发者将他们的 Swift 包移植到 Android 系统,使跨平台共享代码更加容易。

虽然仍处于预览阶段,但 Swift 包索引中已有超过 25% 的包可以编译用于 Android 系统。

从核心层面来看,适用于 Android 系统的 Swift SDK 包含一个为 Android 平台量身定制的 Swift 工具链(即编译器和运行在 Android 系统上的 Swift 标准库实现),以及一组能让 Swift 访问 Android API 的绑定。该 Swift 工具链借助 swift-java 项目实现 Java 与 Swift 的互操作性,能够创建共享对象,这些对象会被链接到 Android 安装包(.apk)存档中,并可通过 Java 本地接口(JNI)进行访问。

Android 版 Swift SDK 在用户界面(UI)方面采取中立的策略。其团队不会只专注于某一种 UI 框架,而是会支持现有的框架,特别是 Android 原生开发工具包(如 Jetpack Compose 和传统的基于 XML 的系统)、Flutter 的 UI 引擎,以及像 Skip 这样的第三方桥接解决方案。Swift Android 团队并未明确提及的另一种可行方法是,使用 OpenGL、Vulkan 或其他渲染引擎以 Swift 实现 UI,然后使用 NativeActivity 将其集成到 Android 应用中。

特别是 Skip 框架,它通过将 SwiftUI 与 Jetpack Compose 进行桥接,在 Android 系统上重新实现了 SwiftUI。这种方法让 iOS 开发者能用最少的精力,在同一个代码库中编写应用的业务逻辑和用户界面。

有一个名为 SwiftCrossUI 的开源替代方案,它能在 macOS、Linux、Windows 系统上提供类似于 SwiftUI 的用户界面 API,并且对 Android 也有一些初步支持。

虽然在 iOS 和 Android 应用中都使用 Swift 的前景听起来很诱人,但正如 andrekandre 在 Hacker News 上指出的,创建出色的跨平台应用不仅仅是工具链支持和原生工具包的问题:

之前就走过这条路,说实话,最大的问题在于开发者的用户体验(iOS 开发者不容易进行调试,与 Kotlin 存在模型不匹配的问题,比如无法从 Swift 捕获 Kotlin 异常),而且最终即便是 Kotlin 多平台也和用于 Android 开发的 Kotlin 不一样,所以在某种程度上,你仍然算是在引入第三种语言......

在苹果宣布在 Swift 项目中成立一个 Android 工作小组大约六个月后,适用于 Android 系统的 Swift 软件开发工具包(SDK)首次发布。该工作小组旨在确保 Swift 无需依赖非官方分支就能编译用于 Android 系统的代码,并增强 Swift 的标准库,使其能更好地与 Android API 兼容。

在适用于 Android 系统的 Swift SDK 发布之前,开发者可以使用第三方解决方案(如 Scade.io)将他们的 Swift 代码编译用于 Android 系统。Scade 基于 Swift4j,专注于非用户界面的应用程序逻辑。

对于希望将应用移植到 iOS 系统的 Android 开发者来说,一个更成熟的选择是使用 Kotlin 多平台与 Jetpack Compose 多平台技术,这对从事 Android 开发的开发者来说,会更加友好平滑。

原文
www.infoq.com/news/2025/1...

相关推荐
我就是不信5 小时前
Swift 方法派发机制详解
开发语言·ios·swift
AIsoft_86896 小时前
科会通录音工具倍速回放怎么切换速度
ios·智能手机
老李IT笔记7 小时前
设备显示在线但指令没回执:三类静默失效的排查顺序
ios·iphone
芯械研究所7 小时前
她宁、益博思、倍思、绿联哪款ipad电容笔好?四款电容笔款式实测解读
ios·ipad·电容笔·电容笔推荐·电容笔测评
Yannik1 天前
iOS CocoaPods私有库完整搭建+踩坑实战总结
ios·cocoapods
终端安全笔记1 天前
绕过工具把 iOS 27 列进支持范围:从它的更新节奏能读出什么
安全·ios
AIsoft_86891 天前
线上培训录屏怎么转文字?科会通操作指南
ios·智能手机
weixin_403810131 天前
苹果脚本编写软件有哪些?怎么选择 iOS脚本技术路线
ios
2501_915918412 天前
在 Xcode 中运行和调试单元测试的完整指南
ide·vscode·macos·ios·单元测试·个人开发·xcode