Xcode 7:更改产品包标识符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode 7:更改产品包标识符相关的知识,希望对你有一定的参考价值。
我正在设置Jenkins以自动化构建过程。特别是,根据我的需要,我希望能够设置不同的包标识符。
我正在使用Xcode Jenkins插件来设置包标识符:
问题是这将更改Info.plist文件和MyTarget> General> Bundle Identifier中的包标识符。但它不会更改“构建设置”>“打包”>“产品包标识符”中的包标识符。
如果我手动完成同样的事情。我在Xcode 7中创建了一个新项目。默认情况下,这三个值是:
当我更改Info.plist
文件中的值时,如下所示:
另外两个值将是:
那么你如何看待Build Settings中的值并没有改变。如果我在Xcode中,我手动更改该值,但如果我在Jenkins中构建项目,则这是一个双重问题。
有谁遇到过同样的问题?你是如何解决的?
谢谢!
面临同样的问题。
PRODUCT_BUNDLE_IDENTIFIER
是project.pbxproj
文件中的变量。将其更改为您想要的任何内容,它将反映在您的Info.plist
以及项目设置中。
udit's answer是正确的。最佳做法是将plist set Bundle ID值设置为$ PRODUCT_BUNDLE_IDENTIFIER。然后在Build Settings中,使用不同的配置(Debug,Release .etc)根据需要设置不同的bundle ID:
您不需要xCode插件来更改bundle id,但需要在那里指定配置。
有关使用shell命令替换$ PRODUCT_BUNDLE_IDENTIFIER的简单解决方案,请参阅this,如 -
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
对于xcode 8.x
更改“目标”>“您的帐户”下的应用程序名称 - “信息”>添加新属性键不会在整个项目中随处更改应用程序名称。
执行此操作时,您的项目将在您的Mac中顺利运行(即,在您用于执行这些更改的系统中,因为所有属性键和标识都将保存在您的系统中)。当您尝试在另一个系统中使用您的项目时,如果您在项目中使用了pod,那么您将得到项目丢失的奇怪错误。
因此,要克服这一点,您只需在构建设置中进行一些更改,而不改变常规选项卡和信息选项卡。
在目标>构建设置下,滚动到包装。
将您的产品名称更改为所需的名称和产品包标识符到新的名称。执行此操作后,自动将项目显示名称和包ID更改为常规选项卡中的新项目。
您还可以通过转到目标并选择“级别”来查看纯文本数据,这将显示包含捆绑标识符的列。
以上是关于Xcode 7:更改产品包标识符的主要内容,如果未能解决你的问题,请参考以下文章
iPhone & iPad - 可以在 Xcode 上更改产品名称吗?
Xcode 7 安装 Apple Watch 应用程序从未完成