使用不同的 Bundle Identifiers 自动构建 iOS

Posted

技术标签:

【中文标题】使用不同的 Bundle Identifiers 自动构建 iOS【英文标题】:Automating iOS builds with different Bundle Identifiers 【发布时间】:2012-06-21 18:03:15 【问题描述】:

我不想详细说明我使用它的目的,但基本上我有一个 python 脚本,它将应用程序的内容下载到 Xcode 项目中的链接文件夹中。该脚本还包含有关应用程序名称的信息以及其他详细信息。

目前我只是让脚本下载文件,并对 Info.plist 文件进行更改,包括我手动生成的包标识符。之后我跑了

xcodebuild -workspace <workspace> -scheme <scheme> -configuration Release archive

我遇到了this issue,这导致它构建和存档调试配置,所以我基本上删除了该配置,现在它使用发布配置构建。

该过程确实在我的“档案”选项卡中的组织器中添加了一个新项目;但是,如果我尝试将其安装在我的设备上(该设备为我的团队提供了任何捆绑包的配置文件),我会收到“找不到此可执行文件的有效配置文件”错误。我已经尝试使用我的开发人员和分发配置文件对其进行签名(两者都设置为通配符以匹配任何捆绑标识符)

现在我在 Info.plist 中只更改了 3 件事(我最终将不得不修改图标文件,可能还需要修改启动画面,但现在可以等待)

CFBundleDisplayName CFBundleName CFBundleIdentifier

通常这些值指向像$ProductName 这样的环境变量,我想我可以尝试将团队的前缀添加到BundleIdentifier

我想我主要要问的是,我还需要设置什么吗?我是否需要为特定应用程序从 Apple 创建/下载配置文件? 我是否应该考虑为每个应用程序创建新的目标,而不是破解项目 Info.plist 来创建新的应用程序存档?

任何帮助将不胜感激。 ~谢谢

【问题讨论】:

【参考方案1】:

看来,当您存档时,您应该使用您的开发者证书进行签名。然后,当您单击 Distribute... 按钮(App Store 或 Ad Hoc)时,XCode 的存档选项卡将对其进行适当的签名(可能会覆盖任何以前的签名)。在您在 iTunesConnect 上创建并填写详细信息并且它处于“准备好二进制上传”状态之前,它不会执行 App Store(甚至验证)。

简而言之,我还没有找到一种简单的方法来获取存档文件并将其直接加载到测试设备上。您将通过 Ad Hoc 条款使用分发功能,然后将其安装到设备上。幸运的是,如果您使用通配符配置,您可以在 iTunesConnect 手动输入捆绑标识符,因此无需使用此功能创建和下载新配置文件。

【讨论】:

以上是关于使用不同的 Bundle Identifiers 自动构建 iOS的主要内容,如果未能解决你的问题,请参考以下文章

linkerd实战HTTP1.1 Identifiers详解

使用 PL/SCOPE 在 identifiers_all 上缺少 CALL

python-标识符(Identifiers)和关键字(keywords)

pywinauto - 动态控制总是列在 print_control_identifiers()

Identifiers

taskgated:杀死应用程序,因为它不允许使用 com.apple.developer.ubiquity-container-identifiers 权利