写点什么

苹果发布 Swift SDK for Android 预览版

作者:Sergio De Simone

  • 2025-11-05
    北京
  • 本文字数:1157 字

    阅读完需:约 4 分钟

大小:541.52K时长:03:04
苹果发布 Swift SDK for Android 预览版

最近的夜间构建版 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/

2025-11-05 13:004967

评论

发布
暂无评论

消除if-else之为Enum添加行为实现策略模式

topsion

Java clean code

运维安全是指什么?如何做好运维安全?

行云管家

运维 网络安全 IT运维 运维安全

英特尔CEO:开启超级摩尔定律的时代,推动前沿进展

科技新消息

优秀程序员的30种思维--分析总结篇(13/100)

hackstoic

架构思维

知名信息安全厂商渔翁信息加入龙蜥社区,共建开源生态

OpenAnolis小助手

Linux 开源 信息安全

数据分析实际案例之:pandas在餐厅评分数据中的使用

程序那些事

Python 数据分析 pandas 程序那些事 2月月更

北京冬奥有哪些AI“黑科技”?

澳鹏Appen

人工智能 自动驾驶 计算机视觉 nlp 黑科技

网络安全kali渗透学习 web渗透入门 WireShark抓包及常用协议分析

学神来啦

Java线程池必知必会

CRMEB

教你用Elastic Search:运行第一条Hello World搜索命令 原创

华为云开发者联盟

数据库 全文检索 索引 Elastic Search 分布式实时搜索引擎

白盒绕过、黑盒绕过——绕过waf(一)

喀拉峻

网络安全

低代码如何解锁制造业数字生态系统?

TOBESOFT特碧软件

低代码 数字化 TOBESOFT

Kubernetes应用,如何选择适合你的Kubernetes应用发布模式

阿里云云效

阿里云 Kubernetes 云原生 CI/CD 发布模式

CRM重构项目

Mars

网络编程懒人入门(十四):到底什么是Socket?一文即懂!

JackJiang

TCP 网络编程 socket IM 即时通讯IM

如何构建一个流量无损的在线应用架构 | 专题尾篇

阿里巴巴中间件

阿里云 云原生 中间件 EDAS

一周信创舆情观察(2.7~2.13)

统小信uos

微服务从代码到k8s部署应有尽有系列(二、网关)

万俊峰Kevin

微服务 RPC web开发 go-zero Go 语言

在线YAML转JSON工具

入门小站

工具

MASA Framework - DDD设计(1)

MASA技术团队

C# .net 微软 框架 Framework

DG-IoT: 开源项目职业教育助力解决过度补课难题

dgiot

物联网 2月月更 2月日更 dgiot dgiot物联网

使用 Flink Hudi 构建流式数据湖平台

Apache Flink

大数据 flink 编程 数据湖 实时计算

Linux常用的命令

龙空白白

linux 文件权限控制 linuc

如何构建一个流量无损的在线应用架构 | 专题中篇

阿里巴巴中间件

阿里云 云原生 中间件

手把手带你基于嵌入式Linux移植samba服务

华为云开发者联盟

Linux 嵌入式 Samba UNIX系统 SMB协议

云原生多云应用利器--Karmada 总览篇

Daocloud 道客

云原生 多云管理 Karmada

云原生微服务技术趋势解读

阿里巴巴中间件

阿里云 微服务 云原生 中间件

G7完成2亿美元融资

极客天地

CTF中PHP相关题目考点总结(二)

H

网络安全 CTF

如何通过测试用例保障交付质量

阿里云云效

阿里云 云原生 开发测试 测试用例 研发

新年新知 | 2022必读的5篇行业趋势(内附下载)

LigaAI

AI 创新 行业趋势 新能源

苹果发布 Swift SDK for Android 预览版_软件工程_InfoQ精选文章