ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件

标签 ios export provisioning-profile ipa xcodebuild

昨天我已经从 Xcode 8.1 升级到 8.3.2,当然我所有的 CI 构建基础架构再次失败(感谢 Apple,你总是知道如何让我更加忙碌!)。

因此,主要的破坏性变化是 -exportProvisioningProfile 不再是一个有效选项。据我了解,他们现在迫使我们改用 -exportOptionsPlist

我已经为我的一个应用程序配置导出,以使用 .plist 文件和 app-store 方法仅用于市场。 对于任何 AdHoc 导出,我很乐意使用 -exportProvisioningProfile "$PROVISIONING_PROFILE"。不知道为什么 Apple 认为它不好。

因此,现在我必须修改我的自动构建脚本以使用 .plist 文件进行任何导出。

我能够从 xcodebuild -help 和其他关于 SO 的问题中发现,我需要将方法设置为 ad-hoc 以进行内部分发。好的,这很简单,但是......

我怎么才能指定要用于 IPA 导出的确切配置文件?

我可以在从 GUI 导出时选择所需的配置文件,所以我相信应该有一些方法可以将它传递给 xcodebuild。但是,我仍然没有在网络上找到任何执行此操作的方法。

提前谢谢你们。


附注请不要建议使用自动配置文件管理,我有几个用于导出的配置文件专用于他们自己的目的,我需要明确说明在特定情况下使用哪一个(我的 bash 脚本在构建过程开始时定义它)。

最佳答案

您不能再直接为 IPA 导出指定 Provisioning Profile,而是必须在 exportOptions.plist 中为 teamIDmethod 指定参数,因此 xcodebuild将能够为您解析所需的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>ad-hoc</string>
    <key>teamID</key>
    <string>YOUR_TEN_CHARACTER_TEAM_ID</string>
</dict>
</plist>

您可以在配置文件中查找您的 teamID(key TeamIdentifier)

如果用于构建 xcarchive 的配置文件使用与导出配置文件相同的 teamID,则您不必在 plist 中设置 teamID 参数,但这总是一个好主意。

请务必将您的 AdHoc Prov 配置文件复制到 $HOME/Library/MobileDevice/Provisioning Profiles,以便 xcodebuild 能够找到它。

编辑

如果您在 $HOME/Library/MobileDevice/Provisioning Profiles 中有多个 Prov 配置文件,它们都与方法、teamID 和应用程序的包标识符的组合相匹配,您将有两个选择:

  1. 在每次导出前准备$HOME/Library/MobileDevice/Provisioning Profiles,这样它就只包含所需的配置文件。将当前内容移走 (cp -Rpf "$HOME/Library/MobileDevice/Provisioning Profiles""$HOME/Library/MobileDevice/Provisioning Profiles Backup"&& rm -f "$HOME/Library/MobileDevice/Provisioning Profiles/"*.mobileprovision), 然后将导出配置文件复制到目录,导出 ipa 并恢复备份文件夹。
  2. 尝试xcodebuild -exportArchive ... PROVISIONING_PROFILE_SPECIFIER=xxx,内容应该是Prov Profile内部plist的Name键的值。此行为未记录,因此它可能不适用于所有 Xcode > 7 版本。当您的应用程序包含嵌入式扩展时,它也可能不起作用,因为它们可能需要单独的 Prov 配置文件。

关于ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43675497/

相关文章:

将数据从 bigquery 导出到 csv

c# - asp.net TreeView 导出到 excel

iOS 配置不起作用

ios - 配置文件不包括应用程序标识符和钥匙串(keychain)访问组权利

c# - 在 xcode 中看不到查看详细信息按钮

IOS 7 缩放在 ScrollView 中不起作用

ios - 如何在特定索引处显示 UITabBarController?

excel - KDB:将 2 个或更多表保存到同一个 Excel/CSV 文件(添加页眉和/或页脚)?

ios - SWIFT 如何创建一个 NSCoding 子类并从另一个类调用它?

javascript - iOS 中的 Acrobat javascript API