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

相关推荐
毕设源码-郭学长12 小时前
【开题答辩全过程】以 基于vue在线考试系统的设计与实现为例,包含答辩的问题和答案
前端·javascript·vue.js
詩句☾⋆᭄南笙12 小时前
初识Vue
前端·javascript·vue.js
Javian12 小时前
浅谈前端工程化理解
前端
艾小码12 小时前
新人必看!3天啃下大型前端项目,我是这样做到的
前端
袁煦丞12 小时前
宝塔FTP远程文件管理+安全防护:cpolar内网穿透实验室第417个成功挑战
前端·程序员·远程工作
三十_12 小时前
【NestJS】构建可复用的数据存储模块 - 动态模块
前端·后端·nestjs
干就完了112 小时前
js数组方法,其实也就这么多东西,一篇全搞懂
前端·javascript
JIE_12 小时前
【Hero动画】用一个指令实现Vue跨路由/组件动画
前端
aidingni88812 小时前
Comet浏览器不为人知的故事
前端·javascript
Cache技术分享12 小时前
182. Java 包 - 创建和使用 Java 包
前端·后端