当试图将由Xcode Bot创建的签名.ipa文件上传到TestFlight时,我已经获得了标准
"无效的IPA:embedded.mobileprovision中的get-task-allow值与您的二进制文件不匹配.您确定使用与编译它的证书类型相同的证书创建了IPA吗?"
警告.问题是该应用程序没有授权文件,我绝对肯定该应用程序正在使用相应的证书进行签名.
我的Bot使用的是一种构建方案,该方案设置为在归档时使用我的Ad-Hoc构建配置.
我的Ad-Hoc构建配置与我的Release配置重复,但...
代码签名标识明确设置为此应用程序帐户的分发证书.
当我解压缩.ipa然后运行时codesign -d -vvvv /path/to/The.app
,它确认应用程序是使用适当的分发证书签名的.我还可以使用Craig Hockenberry的超级实用的quicklook插件来确认embedded.mobileprovision是适当的Ad-Hoc配置文件.
超级奇怪/令人沮丧的部分 - 如果我下载了Bot创建的.xcarchive,然后通过双击签名,然后通过组织者内的传统Distribute ...按钮,它会顺利上传到TestFlight.
我对成功上传的版本运行了相同的协同签名检查,除了CDHash和创建.ipa的日期之外,结果是相同的.
Apple 关于代码签名的文档(向下滚动到"Code Directory Hash")似乎表明不匹配的哈希值可能意味着出现了问题:
因为只要程序以非常重要的方式更改,代码目录就会更改,因此可以使用此测试来明确地识别程序的某个特定版本.
任何人都对这可能是最微弱的想法?我用来生成.ipa的存档是直接从与.ipa相同的构建产品文件夹下载的,但是如果我对该文档的理解是正确的,那么散列应该是相同的.或者我误解了文档和其他问题?
更新12/30:在朋友建议尝试之后我意识到的另一件事:直接来自Xcode Bot的构建产品通过Xcode Organizer直接安装在我的手机上(位于配置文件中),没有问题.根据他们的要求,我已将构建版本通过电子邮件发送给TestFlight,他们看到他们是否可以找到任何问题.
更新2,12 / 30:我会注意到来自Matt Vlasach的这个脚本确实有效,但实际上它使用证书和配置文件从存档重新签署应用程序 - 理论上,不需要添加此步骤如果证书和配置文件与您的构建方案中指定的相同,则应该只能直接上载.ipa构建产品.马特没有详细说明他为什么在他的帖子中添加了这一步 - 任何有任何想法的人?
更新3,1/2:神秘感加深:如果我直接从Xcode Bot获取构建产品并使用TestFlight的桌面应用程序上传它,它上传很好,安装在我的手机(在配置文件上)很好,并打开安装后工作正常.我已根据他们的要求向TestFlight的支持团队发送了大量日志,他们将看看wtfbbq正在进行中,当我收到他们的回复时我会报告回来.
呜!
2014年1月24日下午04:39 PST TestFlight Support写道:
嗨,艾伦,
我们的团队针对此问题部署了修复程序.
如果您遇到任何问题,请告诉我们.
我今天早上证实,我之前在某个get-task-allow
问题上被拒绝的版本现在正在愉快地上传.如果您仍然遇到问题并且已经尝试了上述所有步骤,我强烈建议您直接联系TestFlight支持,它们非常有用.