【问题标题】:Using same version number for multiple Xcode targets Info.plist对多个 Xcode 目标使用相同的版本号 Info.plist
【发布时间】:2014-01-08 15:28:48
【问题描述】:

我有一个包含多个目标的 Xcode 项目。

每个目标都有自己的Info.plist 文件,其中包含该应用程序的版本号。 (CFBundleVersionCFBundleShortVersionString

如何为每个目标使用单个通用版本号和内部版本号源,而不是编辑每个目标的 plist 文件?

【问题讨论】:

  • 这是最好的主意吗?如果您需要对其中一个目标进行修复,但并非所有目标都需要修复,您会为所有目标执行发布吗?
  • 我不应该只对其中一个目标进行修复,除了可能很少发生的徽标替换。
  • 仍有可能发生这种情况(无论多么罕见)。显然这是您的决定,尽管我正在询问这是否是您的最佳选择。
  • 我增加版本号的方式是通过 shell 脚本(共享 shell 脚本)完成的,该脚本将在生产中构建的任何目标上运行。不过这也有问题。例如我们版本的格式是1.0.0,脚本只会增加最后一位,因为我们会进行非常罕见的重大更改,这些更改会影响第二位,甚至更少的更改会影响第一位。

标签: ios iphone objective-c xcode plist


【解决方案1】:

以下适用于 Xcode 12,不需要用户定义的变量。

  1. 选择您的项目
  2. 选择构建设置并找到“版本控制”
  3. 将“营销版本”设置为您的版本
  4. 将“当前项目版本”设置为您的构建


  1. 接下来,选择每个目标
  2. 删除/移除任何版本号,它将使用默认的“营销版本”
  3. 删除/移除任何内部版本号,它将使用默认的“当前项目版本”
  4. 对所有目标执行此操作


完成此操作后,您只需更新项目的“营销版本”和“当前项目版本”,您的所有目标都会相应更新。

【讨论】:

    【解决方案2】:

    向您的项目添加新的自定义属性 (Editor -> Add Build Setting -> Add User Defined Setting)。让我们将其命名为MY_VERSION,并赋予其价值1.0.1

    现在转到每个目标的Info 部分并将版本设置为${MY_VERSION}

    【讨论】:

    • 我确实有一个我的所有目标都使用的 Settings.plist 文件,我想这是添加它的好地方吗?
    • 不稳定的解决方案。版本的“常规”选项卡中的任何编辑(未禁用字段)都会破坏此绑定。
    • @Argus 好吧,你必须知道你正在使用一个属性。没有更好的解决方案。无论如何,这个解决方案已有 7 年的历史,但我仍在将它用于某些项目,特别是当版本因构建配置而异时。
    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多