怎样解决应用提交AppStore后的InvalidSignature错误 invalid path怎么解决

两天前我正打算提交一个版本更新到App Store。这种archiving -> validating ->distributing的流程我已经很熟悉了,所以这次一切按部就班。结果连续两天尝试数十次的提交一直被苹果一封“InvalidSignature”给reject (InvalidBinary),每次都是在包成功上传iTunes几分钟后被机器自动驳回。
而后我在网上就这个问题翻了个遍,尝试了绝大部分别人提供的办法,包括彻底清理build文件夹,重新生成certificate和profile,重新对包做签名等等……archive正常,然后validate正常,distribute正常,在苹果开始处理它之前一切都是正常的,简直能把人搞疯,每次苹果都告诉我:

怎样解决应用提交AppStore后的InvalidSignature错误 invalid path怎么解决
后来我开始找签名是如何生成的,我找到了codesign这个命令,用它检查了一下我的App。对于之前正常提交通过审核的版本它显示出:

对于总是出问题的*.app返回:

然后我打开了*.app/_CodeSignature/CodeResources这个文件,当真找到了这些在Xcode工程栏看不到的文件引用:


我预感这就是失败的原因,输入如下命令让Finder显示隐藏文件(把true改成false用来恢复原本隐藏状态):
defaults write com.apple.finder AppleShowAllFiles -booltrue
果然找到了那几个罪魁文件,使用命令find . -name “.*”-print递归显示所有隐藏文件,使用find . -name “.*” -exec rm rf {};命令递归删除所有.*隐藏文件,之后再重新打包,上传,一切OK,很快程序进入了Waiting ForReview状态。

InvalidSignature属于比较简单的状况,可以很清楚问题出在签名部分。CodeResources存储了所有资源文件在包中的路径和Hash值,整个包还有一个整体的Hash值,这个文件可以起到校验苹果收到的包(或者用户下载到的包)是完好还是损坏的作用,出了问题的包当然不会做进一步处理;codesign对包做签名时会把.*隐藏文件包含进去,但Xcode打包时并不把这类文件拷到目标包内。也许Xcode工具链认为签名是程序自动生成的用户不会手工干预,一定是可靠的就在提交前没有做CodeResources的验证,结果就出了篓子,工具链的乌龙事件让我花去了两天时间来解决,特在此记录,也许能帮助到搜到这里的同学。此事已向苹果反馈,最简单的至少他们可以让报错邮件再详细一点,不要InvalidSignature这么笼统。

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/275956.html

更多阅读

怎样解决魔兽争霸不能全屏的问题 魔兽争霸全屏设置

怎样解决魔兽争霸不能全屏的问题——简介大家常常遇到电脑打开魔兽争霸三冰封王座不是全屏的,两边是黑条的,下面我就来给大家介绍两种方法解决这一问题。怎样解决魔兽争霸不能全屏的问题——工具/原料魔兽争霸三冰封王座-游戏端注册

声明:《怎样解决应用提交AppStore后的InvalidSignature错误 invalid path怎么解决》为网友屌丝肿木了分享!如侵犯到您的合法权益请联系我们删除