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 团队并未明确提及的另一种可行方法是,使用 OpenGLVulkan 或其他渲染引擎以 Swift 实现 UI,然后使用 NativeActivity 将其集成到 Android 应用中。

特别是 Skip 框架,它通过将 SwiftUIJetpack 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...

相关推荐
大熊猫侯佩3 小时前
WWDC26 SwiftUI 进化之路:砸碎黑盒,彻底迎来开发自由!
ios·swiftui·swift
游戏开发爱好者84 小时前
iPhone真机调试有哪些方法?一次定位推送权限问题时整理出来的几种方案
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
大熊猫侯佩11 小时前
WWDC26 最被忽视的王炸:告别“伪并发”陷阱,Swift 6.4 的 async defer
ios·swift·编程语言
h-189-53-67120712 小时前
苹果开发者账号防关联3.2f隔离环境传包提审iOS开发上架的高效隔离方案:iOSUploader工具实用解析
ios·ios上架·ios审核·苹果审核·苹果开发者账号·苹果开发者封号
Legendary_00814 小时前
LDR6020P:iPad 一体式皮套键盘 OTG 应用的核心引擎
ios·计算机外设·ipad
Digitally1 天前
如何高效地将文件从电脑传输到 iPad:6 种简单方法
ios·电脑·ipad
萤萤七悬1 天前
【Python笔记】AI帮封装Airtest IOS-WDA touch操作时的factor坐标转换
笔记·python·ios
库奇噜啦呼1 天前
【iOS】源码学习-锁的原理
学习·ios·cocoa
Digitally1 天前
如何通过蓝牙将 iPhone 文件传输到电脑?5 种替代方案
ios·电脑·iphone