昨天我已经从Xcode 8.1升级到8.3.2,当然我所有的CI构建基础设施都失败了(感谢Apple,你总是知道如何让我更加忙碌!)。
因此,主要的破坏性变化是-exportProvisioningProfile
不再是有效选项。据我了解,他们现在强迫我们使用-exportOptionsPlist
。
我已经为我的某个应用配置了导出,只能使用带有app-store
方法的.plist文件。
对于任何AdHoc导出,我很高兴使用-exportProvisioningProfile "$PROVISIONING_PROFILE"
。不知道为什么Apple认定它不好。
因此,现在我必须修改我的自动构建脚本以使用.plist文件进行任何导出。
我能够从xcodebuild -help
和其他问题中找到SO,我需要将方法设置为ad-hoc
进行内部分发。好的,这很简单,但是......
我怎么能指定用于IPA导出的确切配置文件?
我可以在从GUI导出时选择所需的配置文件,因此我认为应该有一些方法可以将其传递给xcodebuild
。但是,我仍然没有找到任何方法在网上做到这一点。
先谢谢你们。
P.S。请不要建议使用自动配置文件管理,我有几个配置文件用于出口专用于他们自己的目的,我需要说明其中哪一个在特定情况下明确使用(我的bash脚本在构建过程开始时定义它)。 / p>
答案 0 :(得分:3)
您无法再直接指定IPA导出的配置文件,而是必须在exportOptions.plist中指定teamID
和method
的参数,因此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>
您可以在配置文件(密钥TeamIdentifier
)
如果用于构建xcarchive的Provisioning Profile使用与export provisioning Profile相同的teamID,则不必在plist中设置teamID参数,但这总是一个好主意。
请务必将您的AdHoc Prov个人资料复制到$HOME/Library/MobileDevice/Provisioning Profiles
,以便xcodebuild能够找到它。
修改强>
如果$HOME/Library/MobileDevice/Provisioning Profiles
中有多个Prov Profiles都匹配方法,teamID和应用程序包标识符的组合,您将有两个选择:
$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并恢复备份文件夹。xcodebuild -exportArchive ... PROVISIONING_PROFILE_SPECIFIER=xxx
,内容应该是Prov Profile的内部plist的Name
键的值。此行为未记录,因此它可能无法在所有Xcode&gt;中使用。 7个版本。当您的应用包含嵌入式扩展时,它也可能无效,因为它们可能需要单独的Prov Profile。