需要装三个东西,三个都要装,版本还得对上,不然会报错:
• 主机工具链:编译代码用的 swift 命令
• Swift SDK for Android:让 Swift 跑在 Android 上的库
• Android NDK:安卓原生开发工具包
你电脑可能已经有 Swift 了,比如 Xcode 自带的那个。但交叉编译要求版本必须匹配,所以还得重新装个特定版本。用 swiftly 最方便,操作命令如下:
$ swiftly install main-snapshot-2025-10-16
Installing Swift main-snapshot-2025-10-16
Installing package in user home directory...
main-snapshot-2025-10-16 installed successfully!
$ swiftly use main-snapshot-2025-10-16
The global default toolchain has been set to `main-snapshot-2025-10-16` (was 6.2.0)
$ swiftly run swift --version
Apple Swift version 6.3-dev (LLVM 0d0246569621d5b, Swift 199240b3fe97eda)
Target: arm64-apple-macosx15.0
swiftly 能管理多个 Swift 版本,切换也方便。
用内置的 swift sdk 命令,操作如下:
$ swift sdk install https://download.swift.org/development/android-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a_android-0.1.artifactbundle.tar.gz --checksum 451844c232cf1fa02c52431084ed3dc27a42d103635c6fa71bae8d66adba2500
Swift SDK bundle at `https://download.swift.org/development/android-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a_android-0.1.artifactbundle.tar.gz` successfully installed as swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a-android-0.1.artifactbundle.
装完用 swift sdk list 查看,命令和结果如下:
$ swiftly run swift sdk list
swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a-android-0.1
看到这个结果就说明装好了。
Android NDK 提供编译到 Android 架构的头文件和工具。Swift SDK for Android 依赖 NDK 27d,直接下载就行,操作命令如下:
$ mkdir ~/android-ndk
$ cd ~/android-ndk
$ curl -fSLO https://dl.google.com/android/repository/android-ndk-r27d-$(uname -s).zip
$ unzip -q android-ndk-r27d-*.zip
$ export ANDROID_NDK_HOME=$PWD/android-ndk-r27d
下载完还得关联到 Swift SDK,命令如下:
$ cd ~/Library/org.swift.swiftpm || cd ~/.swiftpm
$ ./swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a-android-0.1.artifactbundle/swift-android/scripts/setup-android-sdk.sh
setup-android-sdk.sh: success: ndk-sysroot linked to Android NDK at android-ndk-r27d/toolchains/llvm/prebuilt
看到 success 就说明配置好了,如果之前装过 NDK,设置 ANDROID_NDK_HOME 环境变量指向那个位置,再运行脚本就行。
到这里工具链就配好了。
试试 Hello World,步骤如下:
1、建个目录:
$ cd /tmp
$ mkdir hello
$ cd hello
2、生成一个新包:
$ swiftly run swift package init --type executable
3、先在本地试试:
$ swiftly run swift build
Building for debugging...
[8/8] Applying hello
Build complete! (15.29s)
$ .build/debug/hello
Hello, world!
没问题就可以编译到 Android 了。
用 --swift-sdk 指定目标平台,具体操作如下:
$ swiftly run swift build --swift-sdk x86_64-unknown-linux-android28 --static-swift-stdlib
Building for debugging...
[8/8] Linking hello
Build complete! (2.04s)
$ file .build/x86_64-unknown-linux-android28/debug/hello
.build/x86_64-unknown-linux-android28/debug/hello: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, with debug_info, not stripped
$ swiftly run swift build --swift-sdk aarch64-unknown-linux-android28 --static-swift-stdlib
Building for debugging...
[8/8] Linking hello
Build complete! (2.04s)
$ file .build/aarch64-unknown-linux-android28/debug/hello
.build/aarch64-unknown-linux-android28/debug/hello: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, with debug_info, not stripped
--static-swift-stdlib 把 Swift 标准库静态链接进去,方便部署。
编译完得推到设备上,步骤如下:
1、连上 Android 设备或启动模拟器,用 adb 推文件:
$ adb push .build/aarch64-unknown-linux-android28/debug/hello /data/local/tmp
.build/aarch64-unknown-linux-android28/debug/hello: 1 file pushed, 0 skipped. 155.9 MB/s (69559568 bytes in 0.425s)
2、还得推一个依赖库:
$ adb push $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/*/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so /data/local/tmp
aarch64-linux-android/libc++_shared.so: 1 file pushed, 0 skipped. 145.7 MB/s (1794776 bytes in 0.012s)
3、运行:
$ adb shell /data/local/tmp/hello
Hello, world!
看到这个输出就成功了。
主机工具链和 Swift SDK 版本必须匹配。用 swiftly 管理版本能保证不出错。
ANDROID_NDK_HOME 环境变量很重要,脚本靠它找 NDK。建议加到 .zshrc 或 .bashrc,省得每次设。
真机测试记得打开 USB 调试。模拟器直接用就行。
这只是个命令行程序,真正的 Android App 不是这样发布的。实际应用要打包成 .apk,把 Swift 编译成 .so 库,通过 JNI 让 Java/Kotlin 调用。
官方的 swift-android-examples 仓库有完整示例,可以去看看。
配置确实有点繁琐,要装好几个工具,版本还得对上,不然容易出错。不过配好之后编译速度还行,没想象中那么慢。
主要适合已经有 iOS 项目的团队,想复用业务逻辑。从零开始写 Android 的话,Kotlin 更合适。
PPT2024 3D柱状图绘制教程
不用融资、不做广告:Base44靠Claude和Gemini半年被卖5.7亿
微软Windows 11控制面板的时间和语言功能已迁至设置
未在手机官方应用市场登记的Android应用被拦截阻止安装的几个解决方法
本·阿弗莱克主演美国动作片《会计刺客2》BD英语中字BT迅雷
中国人工智能学会主办的2025第十四届中国智能产业大会与吴文俊人工智能创新大会将在江苏常州举办
AutoCAD如何让图纸文本自动同步更新区域面积
支持AI画图抠图的 PS2025 v26.11 Photoshop2025+AI生图扩充版绿色便携免安装版
OCRBench v2 2025 年 9 月最新榜单
猎豹加速器,极速SSR和智能分流技术提供快速稳定的网络加速服务
如何制作带增长率的Excel多系列柱形图
国内热门 Coding Plan 编程工具接入指南(Claude Code/Cline/OpenClaw/Cursor 等)