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

如何从info.plist更新MARKETING_VERSION和CFBundleVersion?为何修改不生效?

问题解答

可以直接通过Info.plist文件维护版本号(对应MARKETING_VERSION)和构建号(对应CFBundleVersion),你遇到的不生效问题,主要是Xcode的构建设置优先级逻辑导致的,或者可能修改了错误的plist文件。以下是具体原因和解决方法:

核心原因:Xcode的构建设置覆盖机制

在Xcode 13及以上版本中,MARKETING_VERSION和CFBundleVersion的最终生效值来自Target的Build Settings,而非你手动修改的Info.plist文件。当你通过Target>Info>Custom iOS Target Properties修改时,Xcode会同步更新Build Settings和对应的plist条目,所以修改会生效;但直接修改plist文件时,Build Settings里的固定值会在构建过程中覆盖plist的内容,导致你的修改不生效。

具体解决步骤

  1. 确认修改的是Target关联的Info.plist
    打开Target的Build Settings面板,搜索Info.plist File,查看其对应的文件路径,确保你手动修改的plist文件和这个路径完全一致。如果修改的是项目根目录的plist而非Target绑定的文件,自然不会生效。

  2. 调整Build Settings,让其读取plist的值
    打开Target的Build Settings,分别搜索MARKETING_VERSION和CFBundleVersion,将它们的值修改为:

    • MARKETING_VERSION:$(INFO_PLIST:CFBundleShortVersionString)
    • CFBundleVersion:$(INFO_PLIST:CFBundleVersion)
      这样设置后,Xcode在构建时会读取你手动修改的Info.plist中的对应值,而不会用Build Settings的硬编码值覆盖。
  3. 验证修改结果
    执行Cmd+Shift+K清理项目,然后重新构建。可以通过以下方式验证:

    • 在模拟器/真机安装App后,查看App的详情信息
    • 在代码中打印Bundle.main.infoDictionary?["CFBundleShortVersionString"]和Bundle.main.infoDictionary?["CFBundleVersion"],确认输出值和你修改的plist内容一致

内容的提问来源于stack exchange,提问作者Pratik Prajapati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:25:29