xcodebuild 归档失败,提示“Xcode 没有注册帐户”。这是真的 - 我正在尝试在 CI 服务器上构建,因此无法直接访问 Xcode 来添加帐户。但我正在向 Apple Developer 帐户提供身份验证密钥,并且开发证书在钥匙串中。自动签名开启,并且在 pbxproj 文件中设置了 DEVELOPMENT_TEAM。
xcrun xcodebuild archive \
-project MyApp/MyApp.xcodeproj \
-scheme MyApp \
-configuration Release \
-sdk iphoneos \
-destination "generic/platform=iOS" \
-archivePath MyApp/Build/Applications/MyApp.xcarchive \
-allowProvisioningUpdates \
-authenticationKeyID ... \
-authenticationKeyIssuerID ... \
DWARF_DSYM_FOLDER_PATH=Build/Applications
我还尝试在命令行上显式添加
authenticationKeyPath
和 `DEVELOPMENT_TEAM,但它没有改变任何东西。如果我向 Xcode 添加一个帐户,一切正常,但是......这应该在 CI 服务器上运行。
更新:仔细考虑一下,这个错误是有道理的:Xcode 需要知道谁在构建,这样它才能确定他们可以访问哪些证书——并非团队的所有成员都具有相同的角色。但是只有一个团队,它无法弄清楚用户。我认为身份验证密钥与用户相关联,但事实并非如此。所以问题是:如何告诉 xcodebuild 哪个用户正在构建?
这似乎是配置文件问题。 “无帐户”错误通常伴随着第二个“无配置文件”错误,例如
`error: No profiles for '<app ID>' were found: Xcode couldn't find any iOS App Development provisioning profiles matching '<app ID>'. (in target '<target>' from project '<projec>')`
实际上是第二个错误,而不是缺少开发者帐户。这意味着你有错误的个人资料。
解决方案
使用
Provisioning Profiles
目录中的配置文件,而不是从 Apple Developer 下载的配置文件。我不知道有什么区别,但它们的文件大小不同。
在
~/Library/MobileDevice/Provisioning Profiles
目录中进行本地构建以生成配置文件
检查该目录中的文件以找到具有正确 App ID 的文件
将该文件上传到 GH 回购秘密:
base64 -i ~/Library/MobileDevice/Provisioning Profiles/<guid>.mobileprovision | pbcopy