Swift 应用在安卓系统上会怎么样?

当我们想到 Swift 时,通常会想到 iPhone、iPad、Mac。基本上,任何带有闪亮 Apple 标志的产品。

但安卓?

那感觉有点......不对劲。

然而,一些有趣的事情正在发生:Swift------这门由苹果创建的语言------正在安卓上悄然使用。这不仅仅是实验,也不仅仅是业余项目。它通过 Swift.org 支持的一项正式工作,拥有适当的工具、文档和日益增长的社区支持。

那么,当你在安卓上运行 Swift 时,究竟会发生什么呢?

让我们清晰、实际地,并基于截至 2025 年正在进行的实际工作来分解一下。


Swift 在安卓上的核心要点

  • Swift 可以在安卓上使用,但不是用于用户界面 (UI)。
  • 它主要用于跨平台共享业务逻辑
  • 截至 2025 年 6 月,有一个官方的 Swift Android 工作组
  • 它使用 JNI将 Swift 代码桥接到安卓应用中。
  • 你需要使用 CMake + Gradle 设置自定义工具链

这不是要用 Swift 完全重写安卓开发 。但它确实是一种在 iOS 和安卓之间共享逻辑的合法方式,而且无需放弃你熟悉的语言。

背景:Swift Android 工作组 (2025)

2025 年 6 月,Swift.org 团队宣布成立一个新的正式工作组:

🔗 安卓工作组

他们的使命是?

"为了指导和支持 Swift 不断壮大的安卓用户社区,确保提供高质量、可持续的工具,以及出色的开发者体验。"

这不是一次实验。它是 Swift 旨在扩展到苹果平台之外的更广泛目标的一部分------就像他们的 WebAssembly 和 C++ 互操作工作组一样。

该工作组的重点是:

  • 维护安卓工具链
  • 改进 Swift 的核心库(例如 Foundation)以支持安卓
  • 支持与安卓的 Gradle、NDK 和 JNI 集成
  • 让编写共享 Swift 库并在安卓应用中使用变得更容易

那么......它到底是如何工作的呢?

假设你有一些 Swift 逻辑------比如你应用的认证层:

swift 复制代码
public class AuthManager {
    public static func hash(password: String) -> String {
        return password.reversed() + "123" // 虚拟逻辑
    }
}

以下是你如何在安卓上使用它:

1. 将 Swift 编译成安卓 .so

你需要使用 swift-android-toolchain 将 Swift 代码编译成一个共享的本地库(例如 libauth.so)。

为此,你需要准备:

  • Android NDK
  • Swift 工具链 (目标是 aarch64-linux-android
  • CMake/Gradle 构建脚本

2. 使用 JNI 将 Swift 桥接到 Kotlin

在 Kotlin 中:

kotlin 复制代码
external fun hash(password: String): String
init {
    System.loadLibrary("auth")
}

现在你的 Kotlin 应用可以调用你的 Swift 逻辑了------就像调用原生的 C 代码一样。

虽然这有点粗糙,但确实可行。

你能做什么,不能做什么

你可以:

  • 用 Swift 编写业务逻辑
  • 构建静态或动态 Swift 库
  • 使用 Foundation、Dispatch 和其他核心库(存在一些限制)
  • 通过 JNI 从 Kotlin 调用 Swift

你不能:

  • 用 Swift 编写 Android UI(不支持 SwiftUI 或 UIKit)
  • 使用依赖于 Apple 专属框架(例如 AVKit)的 Swift 包
  • 期望在 Android Studio 或 Xcode 中获得完整的 Swift 工具链支持

工具、文档和示例

以下是关键资源:

  • 🔧 swift-android-toolchain: 由 Swift Android 工作组维护的官方工具链
  • 📄 Android Workgroup Charter: 官方使命和职责章程
  • 📦 Readdle Swift Android Sample: 一个使用 CMake 和 Swift 共享代码的实际工作示例
  • 💬 Swift 论坛 --- Android 讨论区: 活跃的贡献者社区和最新动态

架构是怎样的?

以下是其工作原理的简化图:

csharp 复制代码
[iOS]
Swift UI + Swift 逻辑
         ↑
     共享 Swift 代码
         ↓
[Android]
Kotlin UI + JNI 桥接 → Swift .so 库

你用 Swift 编写一次代码(例如,模型、逻辑),然后将其桥接到两个平台,使用各自平台原生的 UI。

注意事项与陷阱

这不是即插即用的。你会遇到:

  • 繁琐的 JNI 桥接
  • 陡峭的工具链设置(除非你习惯了原生开发)
  • 针对 Swift 崩溃的 Android 调试能力有限
  • Android 目标尚不支持 Swift 包管理器 (SPM)

最大的问题是什么?你需要手动编写 CMake + Gradle 脚本。目前还没有图形用户界面工具。

跨平台 Swift UI 会出现吗?

目前还不会。

目前,没有迹象表明 SwiftUI 会被移植到安卓。Swift 安卓工作组只专注于非 UI 集成------即逻辑、库和系统支持。

但基础正在奠定。

如果社区的势头持续增长,未来可能有人会在原生安卓视图之上构建一个 类似 SwiftUI 的抽象层。就像 Flutter 一样,但使用 Swift。

现在预测还为时过早,但并非不可能。

总结:为什么要费这个劲?

你可能会问------如果 Kotlin 在安卓上是官方且原生的,为什么还要用 Swift?

这是个合理的问题。

而这是一个合理的答案:

如果你的团队主要使用 Swift 并且以 iOS 开发为主,那么在安卓上使用 Swift 能让你复用自身优势 ,避免逻辑重复,并加快开发速度

这并非适用于所有团队。但对合适的团队来说,它能实现真正的跨平台开发,同时又不牺牲原生性能或 Swift 的易用性。

欢迎关注我的公众号:OpenFlutter,感谢。

相关推荐
大布布将军3 分钟前
⚡️ 性能加速器:利用 Redis 实现接口高性能缓存
前端·数据库·经验分享·redis·程序人生·缓存·node.js
Change!!6 分钟前
uniapp写的h5,怎么根据页面详情,设置不同的标题
前端·uni-app·标题
浅箬6 分钟前
uniapp 打包之后出现shadow-grey.png去除
前端·uni-app
梵得儿SHI10 分钟前
(第五篇)Spring AI 核心技术攻坚:流式响应与前端集成实现【打字机】效果
前端·webflux·springai·流式响应技术·低延迟ai交互·reactive编程原理·streamapi设计
鹏多多12 分钟前
一文搞懂柯里化:函数式编程技巧的解析和实践案例
前端·javascript·vue.js
前端码农一枚21 分钟前
前端打包性能优化全攻略
前端
Roc.Chang21 分钟前
终极指南:解决 Vue 项目中 “regenerator-runtime/runtime“ 缺失报错
前端·javascript·vue.js·webpack·前端工程
AAA阿giao22 分钟前
从树到楼梯:数据结构与算法的奇妙旅程
前端·javascript·数据结构·学习·算法·力扣·
BD_Marathon26 分钟前
Vue3组件(SFC)拼接页面
前端·javascript·vue.js
wregjru27 分钟前
【C++】2.3 二叉搜索树的实现(附代码)
开发语言·前端·javascript