Linux 上生成 AppStoreInfo.plist,App Store 上架 iOS

在 Linux 服务器上处理 iOS 上传时,很多人会卡在一个奇怪的问题上,IPA 签名完成之后,等待上传的时候,但工具提示缺少 AppStoreInfo.plist

这个文件容易让人误解。它不是 App 里的资源文件,也不是放进 Payload 里的配置文件。它属于上传阶段的数据,和 IPA 一起被提交给 App Store Connect。

确认 Linux 负责的是上传

在这套流程里 Linux 的作用是接收已经签名完成的 IPA,调用命令行上传工具将包提交到 App Store Connect

IPA 可以来自:Xcode Archive、Fastlane 构建、Flutter / React Native 的 macOS 构建节点、HBuilderX 或云打包服务,Linux 不需要参与 iOS 编译,只处理上传。

AppStoreInfo.plist 为什么会在 Linux 上传时出现

如果使用 Xcode 的图形化上传流程,相关 metadata 会由 Xcode 自动处理,我们很少看到它。

但在 Linux 上,没有 Xcode,也没有 Transporter 图形界面。上传工具如果没有自动生成 metadata,就可能出现Missing AppStoreInfo.plist,或者上传阶段直接失败。

这类问题不代表 IPA 损坏,也不代表证书无效。它说明上传缺少 App Store 所需的描述信息。

不建议手动创建 AppStoreInfo.plist

手动创建 plist 看起来可行,但维护成本很高。因为,metadata 字段会随 Apple 上传接口变化、不同上传方式需要的结构可能不同、手写字段出错后,报错会变得更难排查,如果只是为了上传 IPA,手动维护 plist 并不是稳定方案。

使用 AppUploader CLI 自动生成并上传

在 Linux 上,可以使用 AppUploader(开心上架) 的命令行工具完成上传。

Linux 版本的 appuploader_cli 位于下载包的 runtime 目录中。

进入目录后,可以先赋予执行权限chmod +x appuploader_cli

然后执行上传命令:

复制代码
./appuploader_cli --upload-app \
-f Payload.ipa \
-u user@example.com \
-p xxxx-xxxx-xxxx-xxxx \
--type ios

也可以使用子命令写法:

复制代码
./appuploader_cli upload \
-f Payload.ipa \
-u user@example.com \
-p xxxx-xxxx-xxxx-xxxx \
--type ios

这里的参数含义:

  • -f 指定 IPA 文件路径
  • -u 指定 Apple 开发者账号
  • -p 指定 App 专用密码
  • --type ios 指定上传 iOS 应用

执行上传时,CLI 会自动处理上传 metadata,其中就包括 AppStoreInfo.plist,不需要开发者单独生成。

在 CI 里怎么接入

如果 Linux 节点跑在 Jenkins、GitLab CI 或其他发布系统中,可以把上传命令放进脚本:

复制代码
if [ ! -f build/app.ipa ]; then
  echo "IPA not found"
  exit 1
fi

./appuploader_cli upload \
-f build/app.ipa \
-u "$APPLE_ID" \
-p "$APP_PASSWORD" \
--type ios

这样上传流程就变成了一个自动可以重复使用的步骤了:

  • 构建系统产出 IPA
  • Linux 节点检查文件是否存在
  • AppUploader CLI 上传
  • App Store Connect 接收构建

这个过程中,AppStoreInfo.plist 由上传工具自动生成。

在 Linux 上生成 AppStoreInfo.plist,更准确的说法是,上传时自动生成,而不是手动创建。

只要 IPA 已经签名完成,使用 AppUploader CLI 就可以在 Linux 环境中直接上传到 App Store Connect,并自动完成 metadata 处理。

相关推荐
TechNomad3 小时前
Kotlin_Lambda编程详解
android·kotlin
CHB3 小时前
uni-app x 蒸汽模式 iOS版 性能测试基准报告 Benchmark
ios·uni-app·swiftui
熊猫_豆豆4 小时前
QT6 Android C++ 自制美观闹钟
android·c++·qt·闹钟
美狐美颜SDK开放平台4 小时前
Android/iOS直播APP平台开发中的视频美颜SDK优化技巧
android·ios·音视频·美颜sdk·第三方美颜sdk
衍生星球4 小时前
SpringBoot3 + Vue3 + 微信小程序如何学习,以及学哪些技术,组件
sql·微信小程序·uni-app·vue·springboot
HelloWorld工程师4 小时前
新手如何快速申请SSL通配符证书...
网络协议·https·ssl
weixin_451431565 小时前
落地到一个真实项目里——一个 AI驱动的冰箱食材管理小程序
人工智能·ai·小程序
聚美智数7 小时前
黄历查询-运势查询-国际法定节假日查询-API接口介绍
android·java·数据库
私人珍藏库8 小时前
[Android] 一木百宝箱-万能百宝箱+抖音去水印等几百种功能
android·人工智能·app·软件·多功能
wupa8 小时前
在 enableEdgeToEdge 模式下处理软键盘与自定义面板协同
android