使用配置文件从终端问题构建 .ipa

build .ipa from terminal issue with provisioning profile

我先运行这个脚本:

xcodebuild clean archive -archivePath archive/MyApp -scheme MyAppScheme

它通过并在存档目录中生成MyApp.xcarchive。 然后我尝试从存档中生成 .ipa 文件,然后从那里开始乐趣。我 运行 这个脚本:

xcodebuild -exportArchive -exportFormat ipa -archivePath "archive/MyApp.xcarchive" -exportPath "build/MyApp.ipa" -exportProvisioningProfile "UUID from file in ~/Library/MobileDevice/ProvisioningProfiles"

此脚本失败:error: no provisioning profile matches 'XXXXXXX-XXX-XXX...'

如果我尝试使用此构建脚本而不是以前的构建 .ipa:

xcodebuild -exportArchive -exportFormat ipa -archivePath "archive/MyApp.xcarchive" -exportPath "build/MyApp.ipa" PROVISIONING_PROFILE=Same UUID from file in ~/Library/MobileDevice/ProvisioningProfiles

它传递并生成 .ipa,但是当通过 Application Loader 提交 .ipa 文件时,我收到配置文件无效的错误:

ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle com.myapp [Payload/MyApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."

我确定我使用的配置文件 UUID 是分发版 1,因为当我用文本编辑器打开文件时,我可以找到这个:

<key>aps-environment</key>
<string>production</string>

我设法发现的是,第二个通过的脚本使用了另一个 Provisioning UUID(目录中有 3 个:个人的一个和两个用于来自苹果开发者网站的应用程序 - 一个开发,另一个生产)。我通过以下步骤从这里发现了这一点:How to tell what profile/signing certificate was used to sign .ipa? 并检查 .ipa 文件中的 UUID,两者都是通过第二个脚本生成的,通过 xcode(xcode 传递 UUID I传递给终端脚本)。

所以我假设构建 .ipa 的终端脚本(第二个)忽略了 运行 脚本的插入配置文件部分,只是从配置文件目录中获取第一个。

关于如何修复脚本的任何建议:error: no provisioning profile matches 'XXXXXXX-XXX-XXX...' ???

答案在这里:(标记为正确的那个)。 这有点令人困惑。基本上,本地计算机中的 UUID 或配置文件名是什么并不重要。您需要转到 https://developer.apple.com/account/ios/profile/production 并复制名称标签旁边的内容(复制名称)。

或者您可以在您机器上的配置文件目录中的文件中的名称标签下找到 ir。