Xcode 11导出IPA错误:“找不到'my.bundle.id'的配置文件”

15
我正在使用Xcode构建.ipa导出文件以提交给苹果。在升级到Xcode 11之前,我已经成功地完成了这个过程。
我们遇到的一些错误表明我们需要完全卸载Xcode,因为我们之前有一个beta版本,旧版的Xcode beta可能会引起问题。我决定通过系统重置来清除整个Mac,以避免任何Xcode Beta或其设置的副本存在于机器上。所以现在是Mac OS的全新安装。我已经重新安装了Xcode。
我将我的旧证书导入到钥匙串中,并验证了只列出了有效的证书。
我运行两个命令。我首先创建一个存档。然后我使用存档来导出ipa:
xcodebuild -allowProvisioningUpdates -workspace my_app.xcworkspace -scheme XXXX -archivePath build-dev/XXXX.xcarchive archive
xcodebuild -exportArchive -archivePath build-dev/XXXX.xcarchive -exportOptionsPlist release.plist -exportPath build-dev

注意,我已将方案替换为XXXX,并且示例中的捆绑标识符已更改为'my.bundle.id'。
该过程可用于制作开发.ipa文件。但是,当我尝试创建Testflight或Production .ipa时,就会出现错误。
第一个命令没有错误运行,我在“build-dev/XXX.archive”处创建了存档文件。第二个命令生成错误:
2019-09-30 12:11:46.444 xcodebuild[10674:326155] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/10/8g5xrhr56wz6sgttzh0_s8fr0000gn/T/XXXX_2019-09-30_12-11-46.444.xcdistributionlogs'.

2019-09-30 12:11:56.534 xcodebuild[10674:326208]  DVTAssertions: Warning in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-14936/IDEFoundation/Provisioning/Logging/IDEProvisioningLedger.m:172

Details:  Unable to close provisioning ledger entry because not all of its subentries are closed
Object:   <IDEProvisioningLedgerEntry: 0x7ff7568b7a00>
Method:   -closeWithError:
Thread:   <NSThread: 0x7ff750b16af0>{number = 14, name = (null)}
Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide.
error: exportArchive: Create certificate

Error Domain=IDEProvisioningErrorDomain Code=19 "Create certificate" UserInfo={IDEDistributionIssueSeverity=3, IDEProvisioningError_UserInfoKey_IDEProvisioningUserAction=<IDEProvisioningCreateTeamOwnedCertificateUserAction: 0x7ff756acf0c0>, NSLocalizedRecoverySuggestion=Create a new Apple Distribution certificate for your team., NSLocalizedDescription=Create certificate}

error: exportArchive: No profiles for 'my.bundle.id' were found

Error Domain=IDEProfileLocatorErrorDomain Code=1 "No profiles for 'my.bundle.id' were found" UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription=No profiles for 'my.bundle.id' were found, NSLocalizedRecoverySuggestion=Xcode couldn't find any iOS App Store provisioning profiles matching 'my.bundle.id'.}

这是我的release.plist文件。
<?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>app-store</string>
    <key>teamID</key>
    <string>MY-TEAM-ID</string>
    <key>compileBitcode</key>
    <false/>
</dict>
</plist>

我能够在Xcode内成功构建。只有命令行导出时我遇到了问题。

我的bundle id存在于我的developer.apple.com账户中。我在Xcode偏好设置中拥有有效的iOS开发和iOS发布证书。

我不确定为什么会出现这些错误。

1个回答

21
使用GUI从Xcode创建归档文件并导出TestFlight的IPA文件。在此过程中,Xcode能够创建缺失的证书。现在我可以成功运行命令行Xcode命令。
使用GUI创建所需证书的步骤:
- 打开Xcode - 选择“Product” - 选择“Archive”(如果“Archive”为灰色,请先针对通用iOS设备进行构建。) - 选择“Distribute App” - 从单选按钮列表中选择“App Store Connect”,然后单击“下一步”。 - 从单选按钮列表中选择“Export”,然后单击“下一步”。 - 勾选“生成Apple分发证书”。 - 将证书导出备份并与其他开发人员共享。
以下是GUI进程中需要点击的“生成Apple分发证书”窗口的屏幕截图。

enter image description here


1
谢谢,问题已解决。需要我为我们为每个公司构建的项目都这样做。我刚刚像你提到的那样在GUI中勾选了“生成证书”,现在命令行工具可以使用了。看起来这是苹果的一个bug,因为当我添加了-allowProvisioningUpdates标志时,它并没有自动更新配置文件、证书等。 - Daryl
我在上传原生应用到TestFilght时遇到了这个问题。但是我已经安装了我的.p12证书,为什么还会看到这个屏幕?有人能帮忙吗? - Akshay Jadhav
这也是我的解决方案。我必须为每个配置文件执行此操作:如果我可以在xcodebuild中使用dev/adhoc配置文件,我仍然需要使用企业选项的in-house配置文件,然后我可以使用in-house配置文件进行xcodebuild。 - Alex Bin Zhao
谢谢,帮我节省了时间~(在Xcode 14上解决了这个问题) - Kang Developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接