ios – Codesign返回1(对象ifile格式无效或不适合)错误
我正在使用Xcode 4.1 build 4B110f试图让我的iOS应用程序准备好上传.它通过了Product | Archive步骤,没有任何错误,要求两次获得签名的权限.但是当我尝试从管理器验证存档时,它会失败:
### Codesigning '/Users/uqrchern/Library/MobileDevice/Provisioning Profiles/70D2381D-3733-4F5D-88B2-4729572C2864.mobileprovision' with 'iPhone Distribution: Ron Chernich' + /usr/bin/codesign --force --preserve-metadata --sign iPhone Distribution: Ron Chernich --resource-rules=/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app/ResourceRules.plist --entitlements /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/entitlements_plistrZ1Vwko6 /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app Program /usr/bin/codesign returned 1 : [/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app: replacing existing signature /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app: object file format invalid or unsuitable ] error: codesign failed with error 1 我已经看过所有类似的问题和解决方案(其中一些没有任何意义,或适用于真正旧版本的工具).没有任何影响. 我还检查了3次验证是否正在使用“生产”证书,生成存档的代码签名步骤也是如此.我甚至把上面的输出变成了一个schell脚本,所以我可以手动尝试所有的证书:每次都有相同的结果. 也许正在签名的.app文件真的不合适吗? 顺便提一下,codesign没有版本标志,但是手册页的日期是2006年6月1日.二进制文件的文件日期是2010年11月20日. 更新(第二天): 研究这个问题进一步发现了一个模糊的参考文献,说codeign需要以下环境变量集: CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 使用失败的Validate运行的输出,我创建了一个shell脚本,它在失败的codesign –force步骤和中提琴之前导出了这个var!协同设计有效. 但这并没有真正帮助我准备上传代码.有没有办法将此包含在由管理器验证按钮运行的脚本中? 还有一点点,解决方案! : 根据理论,有一个脚本可以生成在管理器验证…运行期间运行的所有命令,我用grep和find进行了一些挖掘.该脚本确实存在,它的名字是: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication 它只是Perl,修复是在开始时将所需的环境var添加到关联数组%ENV,比如第72行: $ENV{CODESIGN_ALLOCATE} = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'; 这完全解决了这个问题.我不知道网上所有其他海报谁认为他们通过删除证书,构建清理,关闭和重新启动Xcode等组合来修复它的来源.我只是默默地断言,这个修复偏爱科学而不是迷信,并且在Xcode 4.1 Build 4B110f及其相关的PackageApplication脚本下运行,在Snow Leopard 10.6.8下使用Perl 5.10.0运行 解决方法
这样就可以将其从未答复的列表中删除.就像你说的,你需要将CODESIGN_ALLOCATE添加到$ENV数组:
$ENV{CODESIGN_ALLOCATE} = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'; 如果每个人都在这里达成一致,我认为这个问题最终可以结束. 使用更新版本的Xcode时,默认位置为: $ENV{CODESIGN_ALLOCATE} = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |