【问题标题】:xcodebuild does not recognize provisioning profilesxcodebuild 无法识别配置文件
【发布时间】:2023-01-31 20:47:54
【问题描述】:

我正在尝试通过 Xcode CLI 在 Testflight 上构建和发布反应本机 iOS 应用程序。我设法通过 Xcode GUI 构建和发布应用程序,但我无法使用 Xcode CLI 执行相同的操作。使用 xcodebuild 创建存档后,我收到配置文件错误,即使我已经检查过它们都已安装并且已经存在。我使用的是 MacBook Pro PC、macOS Ventura 13.1 和 Xcode 14.2。

错误:

Error Domain=IDEProfileLocatorErrorDomain Code=4 "No "iOS App Store" profiles for team 'xxxxxxxxxx' matching 'test-profile' are installed." UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription=No "iOS App Store" profiles for team 'xxxxxxxxxx' matching 'test-profile' are installed., NSLocalizedRecoverySuggestion=Install a profile (by dragging and dropping it onto Xcode's dock item) or specify a different profile in your Export Options property list.}

我使用示例应用程序 [https://github.com/croma-app/croma]),我通过 Xcode 14.2 成功构建了它,然后创建了一个存档,我可以将其导出为 .ipa 文件或直接上传到 Testflight . Xcode 成功签署并导出档案,而 xcodebuild CLI 失败。

xcode构建命令:

user@SPARE-WSM-xxxxxxxxxxxx ios % sudo xcodebuild -exportArchive -exportOptionsPlist ExportOptions.plist -archivePath croma.xcarchive -exportPath '/ipa/'
  • 我仔细检查了 ExportOptions.plist 是否与 Xcode 创建的存档相同。
  • Xcode 识别 iOS App Store 分发“test-profile”,而 xcodebuild 不识别。
  • “test-profile”已安装并位于“/Users/user/Library/MobileDevices/Provisioning Profiles/f5de3135-6ffa-4834-9f61-be39a178e284.mobileprovision”。
  • 此外,在 ExportOptions.plist 文件中,我使用了 UUID“f5de3135-6ffa-4834-9f61-be39a178e284”和“f5de3135-6ffa-4834-9f61-be39a178e284.mobileprovision”而不是名称“test-profile” .
  • 自动管理签名没有帮助,xcodebuild CLI 仍然无法识别配置文件。
  • 将 Xcode 版本降级到 14.1 也无济于事。 - 我也尝试解锁钥匙串虽然使用 sudo,但错误仍然是一样的。
security unlock-keychain -p 'xxxxxxxx' /Users/user/Library/Keychains/login.keychain-db

我认为这是用户权限及其对供应配置文件的访问权限的一个小问题。但是我该如何解决呢?

  • 我如何验证“Library/MobileDevices/Provisioning Profiles/”是 xcodebuild 寻找配置文件的正确位置?

【问题讨论】:

    标签: ios react-native command-line-interface provisioning-profile xcodebuild


    【解决方案1】:

    使用 xcode 归档时,必须在 xcode 中选择一个方案。您可以尝试将方案指定为 xcodebuild 命令的一部分吗?此外,如果您有机会使用 cocoapods,您还应该指定工作空间。

    这些可以分别通过-scheme-workspace 命令参数来完成。

    如果这对您有帮助,请考虑将其标记为答案。

    此外,“Library/MobileDevices/Provisioning Profiles/”确实是应存储配置文件的正确位置。 并且您不需要在 ExportOptions.plist 文件中添加“.provisioning”扩展名。

    【讨论】:

    • 存档已使用 xcodebuild 创建:sudo xcodebuild archive -workspace croma.xcworkspace -scheme croma -configuration Release -archivePath croma.xcarchive -destination='generic/platform=iOS'。
    • 好的。代替destination='generic/platform=iOS'(删除这个),你能使用-sdk iphoneos(添加这个)参数并让我知道结果吗?此外,您在此处指定配置,因此您可以使用 xcode 方案编辑器验证该方案中的存档设置是否使用发布配置。只需在此处点缀我们的“I”并穿过我们的“T”:),如果这没有帮助,请告诉我,我会再考虑一下。这是基于我为自己的一个应用程序编写的构建脚本,并且已经运行了很长时间。
    • 另外,您能否通过将 clean 参数添加到命令中进行测试(以及上述建议)。
    • 从本质上讲,我觉得命令参数缺少一些东西,因为使用 xcode 进行归档是有效的,这意味着您已经设置了所有内容,我们只需要为命令指定正确的参数。
    • 我做了你提到的一切,同样的错误。我什至尝试了另一个应用程序,首先通过 xcode 构建、运行、存档然后发布到 testflight,一切顺利。但是 xcodebuild 仍然无法识别供应配置文件......
    【解决方案2】:

    解决了!

    在不使用“sudo”启动 xcodebuild 存档命令后,我意识到我遇到了一些其他错误。我能够解决该错误以及其他错误,因为我得到了更清晰的错误消息。最后,我能够通过 xcodebuild CLI 将应用程序存档并上传到 Testflight。

    我使用“sudo”再次尝试了相同的过程,但仍然出现相同的错误。我认为 xcodebuild 在使用“sudo”时无法按预期工作。由于我花了很多时间试图找出问题的原因,所以我建议在这种情况下避免使用“sudo”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2020-07-21
      • 2014-12-21
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      相关资源
      最近更新 更多