我正在使用命令行xcodebuild工具从Xcode存档中导出.ipa文件。它在Xcode 8.3.3之前工作正常。相同的设置已停止与 Xcode 9 beta 一起使用。现在它失败并显示此错误:
IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fc309310550>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed."
Xcode 9 似乎找不到配置文件,但为什么呢?
就我而言,该问题已通过-exportOptionsPlist
列表中的下一个字段解决:
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>com.my.bundle.id</key>
<string>AD_HOC_PROVISIONING_PROFILE_NAME</string>
</dict>
<key>signingCertificate</key>
<string>CERTIFICATE_HASH</string>
<key>signingStyle</key>
<string>manual</string>
<key>teamID</key>
<string>TEAM_ID</string>
</dict>
所以,显然我必须设置:compileBitcode
,method
,provisioningProfiles
,signingCertificate
,signingStyle
和teamID
。
在您的情况下,字段集可以不同。我通过 Xcode 9 存档和导出.ipa
找到了我的集合。Xcode 将使用 ipa 导出其exportOptionsPlist
,并显示它使用的字段。
有关油田发现的更多信息:https://blog.bitrise.io/new-export-options-plist-in-xcode-9
我正在运行以下命令:
xcodebuild -exportArchive -archivePath archive.xcarchive -exportPath /my/export/path -exportOptionsPlist options.plist
我的项目使用手动签名。事实证明,Xcode 9 需要 options.plist 中指定的配置文件名称或 UUID 才能对导出的 .ipa 文件进行签名。我将此条目添加到我的 options.plist 中:
<key>provisioningProfiles</key>
<dict>
<key>com.myapp.bundle.id</key>
<string>My AdHoc Provisioning Profile Name</string>
</dict>
并且错误"查找签名资产失败"消失了。但是还有另一个错误:
IDEDistribution: 步骤失败: : 错误域=IDEfoundationErrorDomain Code=1 "ipatool 失败,出现异常: #
默认情况下,Xcode 9 会从位码重新编译应用。我通过在 options.plist 中添加另一个条目来关闭位码来克服此错误:
<key>compileBitcode</key>
<false/>
现在我终于能够使用 Xcode 9 构建我的应用程序,并使用 xcodebuild 导出 ipa 文件而不会出错。