在 Linux 服务器上处理 iOS 上传时很多人会卡在一个奇怪的问题上IPA 签名完成之后等待上传的时候但工具提示缺少AppStoreInfo.plist。这个文件容易让人误解。它不是 App 里的资源文件也不是放进Payload里的配置文件。它属于上传阶段的数据和 IPA 一起被提交给 App Store Connect。确认 Linux 负责的是上传在这套流程里 Linux 的作用是接收已经签名完成的 IPA调用命令行上传工具将包提交到 App Store ConnectIPA 可以来自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 userexample.com \ -p xxxx-xxxx-xxxx-xxxx \ --type ios也可以使用子命令写法./appuploader_cli upload \ -f Payload.ipa \ -u userexample.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这样上传流程就变成了一个自动可以重复使用的步骤了构建系统产出 IPALinux 节点检查文件是否存在AppUploader CLI 上传App Store Connect 接收构建这个过程中AppStoreInfo.plist由上传工具自动生成。在 Linux 上生成AppStoreInfo.plist更准确的说法是上传时自动生成而不是手动创建。只要 IPA 已经签名完成使用 AppUploader CLI 就可以在 Linux 环境中直接上传到 App Store Connect并自动完成 metadata 处理。