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 处理。

相关推荐
Zelman37 分钟前
HTTPS 协议
网络协议·https
LCD液晶屏1 小时前
京瓷液晶屏停产替代:杭州立煌科技工业 LCD 解决方案
android·科技
Digitally1 小时前
如何在没有Wi-Fi的情况使用移动数据或电脑更新iPhone
电脑·cocoa·iphone
imperialeast2 小时前
创建WAV文件 韩文、德文、俄文等unicode音乐标签
windows·小程序
可乐鸡翅yeah_2 小时前
M3U8 防盗链 URL‑Token 签名,新手开发实操避坑
开发语言·javascript·ios·音视频·safari
2501_932750263 小时前
Android 自定义 View 入门
android
姜鱼问生4 小时前
HTTPS 部署实战:未备案域名 + 非标端口的完整方案
linux·https
2601_949950634 小时前
错题总是反复错?用练题簿在线刷题,把复习重点找出来
人工智能·小程序·刷题·练习·小程序推荐
卓怡学长5 小时前
w194基于ssm新能源汽车充电系统小程序
java·小程序·intellij-idea
事圆则缓5 小时前
Android 开启线程的几种方式:Thread、线程池、HandlerThread 与协程
android