跨平台开发在讨论时容易停留在框架选择,比如 Flutter、React Native、uni-app。但项目真正开始的时候,问题一般在后面才出现,比如:
- iOS 签名怎么处理
- 没有 Mac 怎么打包
- IPA 怎么上传
跨平台框架只是入口
先确定一个基础,跨平台框架解决的是 UI 和业务逻辑复用,不解决 iOS 发布的问题
常见选择:
| 框架 | 运行方式 |
|---|---|
| Flutter | Dart 编译 |
| React Native | JS Bridge |
| uni-app | WebView / 原生 |
无论选哪个,最终都会生成一个 iOS 工程(或可构建 iOS 工程)
示例(Flutter)
flutter build ios
示例(uni-app)
- 使用 HBuilderX 云打包生成 iOS 包
构建的时候跨平台≠脱离 Xcode
即使使用跨平台框架,构建 iOS 时仍然需要:
- 证书
- 描述文件
例如 Flutter:
flutter build ipa
底层依然调用 Xcode。
如果签名配置错误,会直接失败。
签名准备:跨平台项目的关键分水岭
这里是很多项目卡住的地方。
在 macOS 上,可以用 Xcode 自动管理,但在跨平台环境(Windows / Linux)中,需要手动准备。
可以用 AppUploader(开心上架) 来生成签名文件。
操作流程
1. 创建证书
- 打开 AppUploader
- 进入证书管理
- 点击新增
- 选择 distribution
- 设置名称与密码
- 下载
.p12
2. 创建描述文件
- 进入描述文件管理
- 新建 App Store 类型
- 选择 Bundle ID
- 绑定证书
- 下载
.mobileprovision
3. 导入到构建环境
- macOS → 导入钥匙串
- CI → 脚本导入
构建 IPA 有多种方式
跨平台项目可以选择不同构建方式:
方式一:本地 Mac 构建
适用于:
- 有 Mac 设备
- 调试阶段
方式二:云构建
例如:
- HBuilderX 云打包
- CI(Mac Runner)
方式三:自动化构建(Fastlane)
build_app(
export_method: "app-store"
)
构建结果统一为:
.ipa文件
上传 IPA 可以摆脱对 macOS 的依赖
上传环节可以完全独立出来。
在 Windows 或 Linux 上,可以直接上传。
使用 AppUploader 上传
步骤如下:
- 打开提交上传页面
- 输入 Apple ID
- 设置专用密码
- 选择 IPA 文件
- 选择上传通道(1 或 2)
- 点击上传
如果遇到:
- 上传卡住
- 进度不动
可以切换通道重新上传。
审核与发布跨平台项目没有区别
上传完成后:
进入 App Store Connect:
My Apps → 选择应用 → TestFlight → 构建 → 提交审核
需要准备:
- 应用截图
- 隐私政策
- 测试账号
八、跨平台开发中一个容易忽略的问题
当修改 Bundle ID 时:
- 描述文件不会自动更新
表现为:
- 构建成功
- 上传后没有构建
解决方式:
- 重新创建描述文件
- 确认 Bundle ID 一致
跨平台开发解决的是写一次代码的问题,但发布流程仍然遵循 iOS 规则,可以把签名、构建、上传拆开,跨平台项目在 iOS 上架上不会比原生复杂。