5.5 iOS 工程目录与构建
3 分钟阅读
原文链接: App Store 与 Prerequisites
5.5 iOS 工程目录与构建
iOS 与 Android 思路一致:Tauri 生成一个 Xcode 工程,Rust 代码编译成静态库,由原生入口加载。区别是 iOS 只能在 macOS 上开发,并且用 Xcode/CocoaPods 管理。
初始化与开发
先确认已经安装完整 Xcode,并完成 2.2 移动端环境配置 中的 iOS 目标与 CocoaPods。
| |
指定模拟器开发:
| |
也可直接传入模拟器名称,例如:
| |
想用 Xcode 图形界面调试:
| |
注意:使用 Xcode/Android Studio 时,启动它们的 Tauri CLI 进程必须保持运行,不能中途关掉。
真机调试的额外一步
真机通过局域网访问开发服务器时,需要让前端 dev server 监听 Tauri CLI 给出的地址:
| |
如果网络环境要求使用 iOS 设备的 TUN 地址,可先打开 Xcode 并连接设备,再执行:
| |
前端(例如 Vite)需要根据 TAURI_DEV_HOST 环境变量决定监听主机,create-tauri-app 生成的模板通常已包含这段逻辑。
iOS 工程目录
tauri ios init 会在 src-tauri/gen/apple/ 生成:
| |
project.yml 是工程描述文件,Tauri 用 XcodeGen 维护 .xcodeproj,所以不要手动在 Xcode 中大规模改动工程结构。
原生入口 main.mm
Sources/<应用名>/main.mm 内容极简:
| |
它通过 bindings.h 调用 Rust 导出的 ffi::start_app()。日常 Rust 代码仍写在 src-tauri/src/lib.rs。
构建与产物
构建 .app:
| |
若要导出 App Store 用 IPA:
| |
官方文档给出的 IPA 输出路径:
| |
模拟器调试产物通常也能在 gen/apple/build/ 下找到。
常见 iOS 专属设置
1. 最低系统版本
Tauri 默认把 iOS 的最低部署版本设为 15.0,可在 tauri.conf.json 中调整:
| |
注意:部分 iOS 平台配置在修改后不会自动写进 .xcodeproj,如果 Xcode 中没有生效,可删除后重新执行 tauri ios init,再打开工程确认。
2. 网络权限
真机首次运行 tauri ios dev,系统会提示“允许 App 查找并连接本地网络设备”。这是为了访问 Mac 上的开发服务器,必须点“允许”。
3. 隐私描述
需要摄像头、位置等权限时,在 Xcode 的 Info 或 Tauri 自动查找的 Info.plist 中加描述,例如:
| |
4. 签名
真机运行与上架都需要 Apple Developer 账号和签名。Xcode 的 Signing & Capabilities 中配置 Team 即可,上架还需在 Apple Developer 生成证书与描述文件。
5. Web Inspector
iOS 的网页调试不叫 DevTools,而是:
- Mac 上打开 Safari → 设置 → 高级 → 勾选“显示网页开发功能”;
- 真机开启 Safari 的 Web Inspector;
- Safari 的“开发”菜单里选择设备与页面。
iOS 与 Android 的目录对照
| 概念 | Android | iOS |
|---|---|---|
| 原生壳工程 | gen/android/ Gradle | gen/apple/ Xcode |
| 原生语言 | Kotlin/Java | Objective-C++(插件可含 Swift) |
| 依赖工具 | Gradle | CocoaPods |
| 加载 Rust 的方式 | 动态 .so | 静态库链接 |
| 入口代码 | MainActivity.kt | main.mm |
| 商店产物 | AAB | IPA |
下一步
到这里,你已经能从总体上把握五个平台的工程布局。接下来看如何“加功能”和“发出去”: 第 6 章。