Xcode 7:更改产品包标识符

Luc*_*lla 42 xcode jenkins jenkins-plugins bundle-identifier xcode7

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

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

Jenkins Xcode插件 - 代码签名和OS X钥匙串选项

问题是这将更改Info.plist文件和MyTarget> General> Bundle Identifier中的包标识符.但它不会更改"构建设置">"打包">"产品包标识符"中的包标识符.

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

信息plist之前以前的目标一般打包

当我Info.plist像这样更改文件中的值时:

信息plist改变了

另外两个值将是:

目标一般后 包装之后

那么你如何看待Build Settings中的值并没有改变.如果我在Xcode中,我手动更改该值,但如果我在Jenkins中构建项目,则这是一个双重问题.

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

谢谢!

小智 30

面临同样的问题.

PRODUCT_BUNDLE_IDENTIFIER是project.pbxproj文件中的变量.将其更改为您想要的任何内容,它将反映在Info.plist和项目设置中.


Aok*_* Li 27

udit的回答是正确的.最佳做法是将plist set Bundle ID值设置为$ PRODUCT_BUNDLE_IDENTIFIER.然后在Build Settings中,使用不同的配置(Debug,Release .etc)根据需要设置不同的bundle ID: 在此输入图像描述

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

在此输入图像描述

  • 在大多数情况下,这是最佳实践,我同意。但我希望所有这些参数都是可定制的。基本上我想要一个 Web 界面,客户可以添加 p12 文件、移动配置文件、捆绑标识符,他们将获得自定义的 .ipa (2认同)

Sar*_*hal 11

请参阅为一个简单的解决方案使用的shell命令一样$ PRODUCT_BUNDLE_IDENTIFIER取代-

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