【问题标题】:xcodebuild -exportArchive fails with error Locating signing assets failedxcodebuild -exportArchive 失败并出现错误定位签名资产失败
【发布时间】:2017-07-17 07:41:29
【问题描述】:

我正在使用命令行 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 似乎无法找到配置文件,但为什么?

【问题讨论】:

标签: ios ipa xcodebuild xcode9-beta xcode9


【解决方案1】:

在我的情况下,-exportOptionsPlist plist 中的下一个字段解决了这个问题:

<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>

所以,显然我必须设置:compileBitcodemethodprovisioningProfilessigningCertificatesigningStyleteamID

在您的情况下,字段集可以不同。我通过 Xcode 9 归档和导出 .ipa 找到了我的集合。Xcode 将使用 ipa 导出其 exportOptionsPlist 并显示它使用的字段。

有关字段发现的更多信息:https://blog.bitrise.io/new-export-options-plist-in-xcode-9

【讨论】:

  • 谢谢!为我工作。 compileBitCode 不是签名问题的一部分,可能不需要。应标记为解决方案...
【解决方案2】:

我正在运行这个命令:

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: Step failed: : Error Domain=IDEFoundationErrorDomain Code=1 "ipatool failed with an exception: #

Xcode 9 默认从位码重新编译应用程序。我通过在我的 options.plist 中添加另一个条目来关闭位码,从而克服了这个错误:

<key>compileBitcode</key>
<false/>

现在我终于可以使用 Xcode 9 构建我的应用程序并使用 xcodebuild 导出 ipa 文件而不会出错。

【讨论】:

  • 我们已经尝试过这个(使用 UUID 和我们认为的名称)并且我们得到了同样的错误。 xcodebuild 告诉您它在 在哪里,它正在尝试 哪些 配置文件以及它们不适合的原因将非常有帮助。
  • 有人弄清楚“NonZeroExcitException”的实际原因是什么?关闭 Bitcode 不是我们的选择
  • 一些与 NonZeroExcitException 相关的有用信息:它来自归档步骤中的 python 脚本 bitcode-build-tool。 Xcode 在临时文件夹中创建日志。对我来说是:/var/folders/62/wwfl967573n9f1g2yqg_3zg80000j_/T/MyApp_2017-09-18_10-32-23.314.xcdistributionlogs 这些日志包含脚本的更详细输出。导出步骤中的位码似乎存在一些问题。
  • 以为我会跟进任何在 Google 上偶然发现此问题的人。如果您在 Xcode 中有嵌套项目,请确保链接到子项目的所有库也链接到 Link Libraries 和 Embed Binaries 下的顶级项目,尤其是在启用 Bitcode 时。位码工具从顶级链接列表中提取它的命令行参数,如果你遗漏了任何一个,它会与名称非常糟糕但幸运的是很容易被 Google 支持的“NonZeroExcitException”所困扰
  • 它适用于我在 XCode9 上。对于“我的 AdHoc 配置文件名称”,我将其替换为下载文件 *.mobileprovision 中的 UUID,位于“UUID”之后的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 2018-02-24
  • 1970-01-01
  • 2016-11-21
  • 2012-09-24
  • 1970-01-01
  • 2018-09-18
相关资源
最近更新 更多