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,感谢。

相关推荐
JarvanMo3 小时前
Flutter:使用图像作为屏幕背景
前端
Mintopia3 小时前
💰 金融Web应用中的AIGC风险控制技术与合规适配
前端·javascript·aigc
Mintopia3 小时前
🚀 Next.js 压力测试与性能调优实战
前端·javascript·全栈
江城开朗的豌豆3 小时前
TypeScript 类型系统漫游指南:从入门到爱上类型安全
前端·javascript
江城开朗的豌豆3 小时前
从 JavaScript 到 TypeScript:我为什么选择了类型守护
前端·javascript
杨超越luckly3 小时前
HTML应用指南:利用POST请求获取全国爱回收门店位置信息
大数据·前端·python·信息可视化·html
鹏多多4 小时前
解锁flutter弹窗新姿势:dialog-flutter_smart_dialog插件解读+案例
前端·flutter·客户端
IT_陈寒4 小时前
Redis 7.0的这个新特性让我处理百万级QPS轻松了50%,你可能还不知道!
前端·人工智能·后端
2301_796512524 小时前
Rust编程学习 - 如何快速构建一个单线程 web server
前端·学习·rust
蒜香拿铁4 小时前
Angular【核心特性】
前端·javascript·angular.js