Xcode 7:更改产品包标识符

时间:2015-09-30 09:13:34

标签: xcode jenkins jenkins-plugins xcode7 bundle-identifier

我正在设置Jenkins以自动化构建过程。特别是,根据我的需要,我希望能够设置不同的包标识符。

我使用Xcode Jenkins插件设置包标识符:

Jenkins Xcode plugin - Code signing & OS X keychain options

问题是,这将更改Info.plist文件和MyTarget>中的包标识符。一般>捆绑标识符。但它不会在Build Settings>中更改包标识符。包装>产品包标识符。

如果我手动完成同样的事情。 我在Xcode 7中创建了一个新项目。默认情况下,这三个值是:

Info plist before target general before packaging

当我更改Info.plist文件中的值时,如下所示:

Info plist changed

另外两个值将是:

target general after packaging after

所以你怎么看到Build Settings中的值没有变化。如果我在Xcode中手动更改该值,但如果我在Jenkins中构建项目,则这是一个双重问题。

有人遇到过同样的问题吗?你是如何解决它的?

谢谢!

6 个答案:

答案 0 :(得分:27)

面临同样的问题。

PRODUCT_BUNDLE_IDENTIFIERproject.pbxproj文件中的变量。将其更改为您想要的任何内容,它将反映在您的Info.plist以及项目设置中。

答案 1 :(得分:25)

udit's answer是正确的。最佳做法是将plist set Bundle ID值设置为$ PRODUCT_BUNDLE_IDENTIFIER。然后在Build Settings中,使用不同的配置(Debug,Release .etc)根据需要设置不同的bundle ID: enter image description here

您不再需要xCode插件来更改bundle id,但需要在那里指定配置。

enter image description here

答案 2 :(得分:11)

有关使用shell命令替换$ PRODUCT_BUNDLE_IDENTIFIER的简单解决方案,请参阅this,如< - p>

sed -i '' 's/com.example.oldbundleid/com.example.newbundleid/g' project.pbxproj

您可以使用Jenkins / Shell相应地传递变量。

执行此操作的替代方法是使用mod-pbxproj

python -m mod_pbxproj -b -af PRODUCT_BUNDLE_IDENTIFIER=com.example.newbundleid -rf PRODUCT_BUNDLE_IDENTIFIER=com.example.oldbundleid project.pbxproj All

//修改

旧的包ID可以通过 -

获取

awk -F '=' '/PRODUCT_BUNDLE_IDENTIFIER/ {print $2; exit}' project.pbxproj

这可以存储在字符串变量中,并用于代替com.example.oldbundleid

答案 3 :(得分:3)

xcode 8.x

在目标&gt;下更改应用名称your_app_name - 信息&gt;添加新属性键不会在整个项目中随处更改应用名称

执行此操作时,您的项目将在您的Mac中顺利运行(即,在您用于执行这些更改的系统中,因为您的所有属性键和标识都将保存在您的系统中)。当您尝试在另一个系统中使用您的项目时,如果您的项目中使用了pod,那么您将得到项目丢失的奇怪错误。

因此,为了克服这个问题,您必须在构建设置中进行一些更改,而不改变常规标签和信息标签。

目标&gt;下构建设置,滚动到打包

产品名称更改为所需名称&amp; 产品包标识符到新的标识符。完成此操作后,自动生成项目显示名称&amp; bundle ID更改为General选项卡中的新ID。

答案 4 :(得分:0)

您还可以通过转到“目标”并选择“级别”来以纯文本格式查看数据,这将显示包括捆绑标识符的列。

enter image description here

答案 5 :(得分:0)

如果您使用bundle id suffixes,请不要在Product Bundle Identifier的{​​{1}}标签上设置General

Target Settings标签上进行设置。

例如:

Build Settings