我有一个相当典型的iOS 8 iOS / ObjC / Xcode 6.4应用程序,其中包含一个WatchKit扩展。我可以使用存档菜单选项使用Xcode手动提交到App Store。
我们使用构建服务器(Bamboo但不应该这么重要)。构建服务器目前通过HockeyApp自动构建和分发,但我们使用Xcode手动构建并上传到iTunes Connect。我们希望自动化iTunes Connect的构建,因此我们确定HockeyApp和iTunes Connect(TestFlight和App Store)都使用相同的代码库。
我有一段时间让脚本适用于iTunes Connect,因为(我相信)需要签名的三个目标(iOS app,WatchKit Extension和Watch App)。
我找到了一个相关问题的答案,这个问题非常有用:https://stackoverflow.com/a/29605731。这表明将变量放入三个目标的Provisioning Profile设置中。这适用于建筑。但这个问题并不涉及上传到iTunes Connect,这是我遇到麻烦的地方。
所以我的脚本看起来像这样:
APP_PROFILE="[the hex string]"
WATCHKITEXT_PROFILE="[another hex string]"
WATCHAPP_PROFILE="[one more hex string]"
首先我制作xcarchive:
xcodebuild archive -project myProject.xcodeproj -scheme "myScheme" -archivePath myProject.xcarchive APP_PROFILE="${APP_PROFILE}" WATCHKITEXT_PROFILE="${WATCHKITEXT_PROFILE}" WATCHAPP_PROFILE="${WATCHAPP_PROFILE}"
工作正常。然后我将存档导出到.ipa:
xcodebuild -exportArchive -archivePath "myProject.xcarchive" -exportPath "myPath" -exportFormat ipa APP_PROFILE="${APP_PROFILE}" WATCHKITEXT_PROFILE="${WATCHKITEXT_PROFILE}" WATCHAPP_PROFILE="${WATCHAPP_PROFILE}"
也报告成功。然后我需要使用Application Loader的命令行工具将.ipa发送到iTunes Connect(这里我只是验证):
altool --validate-app -f "myProject.ipa" -u myUsername -p myPassword
会回吐这组错误消息:
***错误:无法验证存档' myProject.ipa' :( "错误域= ITunesConnectionOperationErrorDomain代码= 1091 \"签名无效。密封的资源丢失或无效。确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名。验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,请确保您上传的软件包是使用Xcode中的Release目标而不是Simulator目标构建的。如果您确定您的代码签名设置正确,请选择\"全部清除\"在Xcode中,删除\" build \" Finder中的目录,并重建您的发布目标。有关详细信息,请参阅https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html \" UserInfo = 0x7fec4be78b80 {NSLocalizedRecoverySuggestion =无效签名。密封的资源丢失或无效。确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名。验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,请确保您上传的软件包是使用Xcode中的Release目标而不是Simulator目标构建的。如果您确定您的代码签名设置正确,请选择\"全部清除\"在Xcode中,删除\" build \" Finder中的目录,并重建您的发布目标。有关详细信息,请参阅https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html,NSLocalizedDescription =无效签名。密封的资源丢失或无效。确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名。验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,请确保您上传的软件包是使用Xcode中的Release目标而不是Simulator目标构建的。如果您确定您的代码签名设置正确,请选择\"全部清除\"在Xcode中,删除\" build \" Finder中的目录,并重建您的发布目标。有关详细信息,请参阅https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html,NSLocalizedFailureReason = iTunes Store操作失败。}"
如果我使用Application Uploader GUI,我会收到同样的错误。
我确信我在脚本中使用了正确的配置文件,因为当我在Xcode中导出存档时,这三个Xcode选择(导出将验证/提交正常)。
我不知道在哪里看下一个。任何和所有的帮助表示赞赏 - 谢谢!