You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode归档时移除Info.plist隐私密钥导致无法上传App Store

问题根本原因

该问题是Xcode 13及之后版本默认开启自动生成Info.plist机制导致的典型配置错配问题:

  • 当项目Target的构建设置中GENERATE_INFOPLIST_FILE(即「Generate Info.plist File」选项)被设为YES时,Xcode执行归档(Release模式构建)时不会直接使用你手动编辑的原始Info.plist文件,而是会根据Build Settings中内置的配置映射规则,自动生成最终打包进IPA的Info.plist文件,直接覆盖原始文件中未被规则识别的自定义字段。
  • 你当前看到隐私权限密钥出现在Build Settings的User Defined分区,是之前手动往Info.plist加键时Xcode做的自动同步,但自动生成plist的逻辑默认不会读取User Defined分区下的自定义隐私键写入最终产物,导致归档后包内的Info.plist缺失必填的隐私权限声明,直接触发App Store Connect的上传校验拦截。

Build Settings中User Defined分区的密钥截图

可直接落地的修复方案

根据你的项目维护习惯二选一即可:

  • 方案1:保留Xcode自动生成Info.plist的模式
    打开Target > Build Settings,搜索GENERATE_INFOPLIST_FILE确认值为YES后,不要在原始Info.plist里手动添加隐私权限键,直接在Build Settings搜索Xcode内置的隐私配置项,填入对应权限文案即可:
    • 提醒事项权限对应项:Privacy - Reminders Usage Description(映射键NSRemindersUsageDescription)
    • 照片权限对应项:Privacy - Photo Library Usage Description(映射键NSPhotoLibraryUsageDescription)
    • 健康数据权限对应项:Privacy - Health Share Usage Description、Privacy - Health Update Usage Description(分别对应NSHealthShareUsageDescription、NSHealthUpdateUsageDescription)
      配置完成后归档时Xcode会自动把这些文案写入最终生成的Info.plist,不会再出现字段丢失的问题。
  • 方案2:切换回手动维护Info.plist的模式
    打开Target > Build Settings,搜索GENERATE_INFOPLIST_FILE将值改为NO,回到项目原始Info.plist文件中补全所有需要的隐私权限密钥和对应文案,后续归档时Xcode会直接使用你手动维护的plist文件,不会自动覆盖修改内容。
  • 额外排查项:如果以上配置调整后问题仍然存在,检查项目的Build Phases中是否存在自定义Run Script脚本在构建阶段执行了全量覆盖Info.plist的逻辑(比如部分老旧的自动改版本号脚本),调整脚本逻辑为仅修改目标字段、不要全量重写plist文件即可。

内容的提问来源于stack exchange,提问作者Grant Oganyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:09:16