将由Xcode Bot签名的构建上传到testflight,因为get-task-allow错误而被拒绝

时间:2013-12-20 20:12:41

标签: xcode code-signing bots ios-provisioning testflight

当尝试将由Xcode Bot创建的签名.ipa文件上传到TestFlight时,我一直在获得标准

  

“无效的IPA:embedded.mobileprovision和您的二进制文件中的get-task-allow值不匹配。您确定使用与编译它的证书类型相同的证书创建了IPA吗?”

警告。问题是该应用程序没有授权文件,我绝对肯定该应用程序正在使用相应的证书进行签名。

  • My Bot使用的构建方案设置为在归档时使用我的Ad-Hoc构建配置。
  • 我的Ad-Hoc构建配置与我的发布配置重复,但......
  • 代码签名标识明确设置为此应用程序帐户的分发证书。

当我解压缩.ipa然后运行codesign -d -vvvv /path/to/The.app时,它确认应用程序是使用适当的分发证书签名的。我还可以使用Craig Hockenberry's super-useful quicklook plugin确认embedded.mobileprovision是适当的Ad-Hoc配置文件。

超级怪异/令人沮丧的部分 - 如果我下载了Bot创建的.xcarchive,然后通过双击签名,然后通过组织者内的传统Distribute ...按钮,它上传到TestFlight而没有拴住。

我对成功上传的版本运行了相同的协同签名检查,除了CDHash和创建.ipa的日期之外,结果是相同的。

Apple的documentation on code signing(向下滚动到“Code Directory Hash”)似乎表明不匹配的哈希值可能意味着出现了问题:

  

因为只要程序以非常重要的方式更改,代码目录就会更改,因此可以使用此测试来明确地识别程序的某个特定版本。

任何人都对这可能是最微弱的想法?我用来生成.ipa的存档是直接从与.ipa相同的构建产品文件夹下载的,但是如果我对该文档的理解是正确的,那么散列应该是相同的。或者我误解了文档和其他错误?

更新12/30: 在朋友建议尝试后我意识到的另一件事:直接来自Xcode Bot的构建产品直接安装在我的电话(在相关的配置文件中)通过Xcode管理器没有问题。根据{{​​3}},我已将构建版本通过电子邮件发送给TestFlight,他们会看到他们是否有任何问题可以找到。

更新2,12 / 30: 我会注意到their request确实有效,但它实际上是从使用证书和配置文件存档 - 理论上,如果证书和配置文件与您的构建方案中指定的相同,则不应该添加此步骤,应该只能上载.ipa构建产品直。 Matt没有详细说明为什么他在帖子中添加了这一步 - 对此有任何想法的人?

更新3,1 / 2: 神秘感加深:如果我直接从Xcode Bot获取构建产品并使用{{3}上传它,它上传很好,安装在我的手机(在配置文件上)很好,并在安装后打开并正常工作。我已根据他们的要求向TestFlight的支持团队发送了大量日志,他们将看看wtfbbq正在进行中,当我收到他们的回复时我会报告。

2 个答案:

答案 0 :(得分:5)

呜!

  

2014年1月24日下午04:39 PST TestFlight支持写道:

     

嗨,艾伦,

     

我们的团队针对此问题部署了修复程序。

     

如果您遇到任何问题,请告知我们。

我今天早上确认我之前在get-task-allow问题上被拒绝的版本现在正在愉快地上传。如果您仍然遇到问题并且已经尝试了上述所有步骤,我强烈建议您直接联系TestFlight支持,他们非常有帮助。

答案 1 :(得分:0)

我最近遇到了这个问题,正在构建命令行。 我意识到xcodebuild命令将选择配置文件和签名willynilly。然后,如果您使用xcrun和PackageApplication对已编译的文件夹进行签名,则可以使用不同的sig或配置文件对其进行签名。

要修复它,请指定xcodebuild应使用的签名和配置文件。

这就是之前的情况,不包括随后调用xcrun来签署和打包应用程序。 xcodebuild -sdk iphoneos -configuration Release

这就是所需要的 xcodebuild -sdk iphoneos -configuration发布CODE_SIGN_IDENTITY = PROVISIONING_PROFILE =

如果没有它,你可以得到任何东西,从签名身份找不到签名不匹配,如果它完全找到其他证书。