很多团队的 CI 或发布环境运行在 Linux 服务器上,例如 GitLab Runner、Jenkins 或自建构建节点。当应用已经生成 .ipa 文件之后,接下来就是是否可以在 Linux 上直接把 IPA 上传到 App Store?
答案是可以的,关键在于把流程分开,构建 IPA 与上传 IPA 并不是同一件事。
下面说明如何在 Linux 通过命令行完成 iOS 上架流程。
一、准备发布所需文件
在 Linux 上传之前,需要准备三个文件:
| 文件 | 作用 |
|---|---|
.ipa |
iOS 应用安装包 |
.p12 |
iOS 发布证书 |
.mobileprovision |
App Store 描述文件 |
这些文件可以来自不同来源:
- Mac 构建环境
- CI 构建系统
- 云打包服务
如果团队没有 Mac,也可以通过 AppUploader(开心上架) 在 Windows 或 Linux 环境生成证书和描述文件。
生成证书的大致流程:
- 登录 Apple 开发者账号
- 进入证书管理
- 创建
distribution类型证书 - 下载
.p12文件
描述文件创建流程:
- 进入描述文件管理
- 新建
App Store类型 - 绑定 Bundle ID 与证书
- 下载
.mobileprovision文件
这些文件会在打包或 CI 构建阶段使用。

二、在 CI 或 Mac 构建 IPA
Linux 环境通常只负责发布,而不是构建 iOS 应用。
IPA 可以通过以下方式生成:
使用 Xcode
在 Mac 上执行:
Product → Archive
然后导出 App Store 类型 IPA。
使用 Fastlane
如果项目使用 Fastlane,可以通过脚本构建:
lane :release do
build_app(
scheme: "AppScheme",
export_method: "app-store"
)
end
执行:
fastlane release
生成 .ipa 文件。
构建完成后,将 IPA 上传到 Linux 服务器。
三、在 Linux 安装上传工具
Linux 上无法运行 Xcode 的上传工具,但可以使用命令行上传工具。
其中一种方式是使用 AppUploader CLI。
下载 AppUploader 后,可以在压缩包中找到命令行工具。
确认命令可执行:
chmod +x appuploader_cli
四、使用命令行上传 IPA
在 Linux 服务器执行:
appuploader_cli -f app.ipa -u appleid@example.com -p xxxx-xxxx-xxxx-xxxx -c 2
参数说明:
| 参数 | 含义 |
|---|---|
-f |
IPA 文件路径 |
-u |
Apple 开发者账号 |
-p |
App 专用密码 |
-c |
上传通道 |
通道说明:
1旧上传通道2新上传通道
上传成功后,命令行会返回上传状态。
五、在 App Store Connect 查看构建
上传完成后,进入 App Store Connect:
My Apps → App → TestFlight
等待 Apple 处理构建。
处理完成后:
- 可以看到新的构建版本
- 可以分发 TestFlight
- 可以提交审核

六、在 CI 中自动化上传
Linux 命令行上传的一个优势是可以直接集成到 CI。
例如 Jenkins Pipeline:
stage('Upload IPA') {
sh '''
./appuploader_cli \
-u $APPLE_ID \
-p $APP_PASSWORD \
-c 2 \
-f build/app.ipa
'''
}
CI 在构建完成后自动上传。
七、常见问题排查
构建未出现在 App Store Connect
检查:
- Bundle ID 是否一致
- 构建号是否递增
- 是否使用 Distribution 描述文件
上传失败
确认:
- App 专用密码正确
- 网络未被阻断
- IPA 文件未损坏
八、Linux 发布流程总结
如果把流程整理成工具组合,会得到如下结构:
| 阶段 | 工具 |
|---|---|
| 证书生成 | AppUploader |
| 描述文件生成 | AppUploader |
| IPA 构建 | Xcode / Fastlane |
| 命令行上传 | AppUploader CLI |
| 审核提交 | App Store Connect |
iOS 应用上架流程并不一定绑定在 macOS 上。
如果 IPA 文件已经生成,上传阶段完全可以在 Linux 环境通过命令行完成。