近期做项目遇到一个比较奇怪的问题,用unity打包ios后经过一番配置在xcode中可以完美编译并可以直接通过xcode在手机上运行APP,但是想要打包成ipa上传应用商店时出现了“Found an unexpected Macn-O header code:0x72613c21”错误,查看日志时发现错误内容多为“Didn`t find info dictionary for ……”,经过一番猛如虎的搜索找到了以下解决方案:

  1. 打包失败可能是因为将静态库放到了Embedded Binaries,需要经静态库移到Link Frameworks and Libraries中;然后在我的项目中找了下,发现Embedded Binaries中没有任何内容,排除。
  2. 问题有可能出在Fabrics/Crashlytics上,有可能是因为版本不够新,移除Crashlytics后就可以正常编译,或者升级Crashlytics到3.7.2也可以,或者升级Xcode到最新版本;因为打包用的mac是比较老的了,为了升级成最新的xcode我特意换了一台新mac,结果问题依旧,排除。
  3. 查看日志中的错误信息发现错误都是出在第三方插件(友盟统计)上面,针对性的搜索了下,网友提议可能是用的sdk版本太旧,更新到最新版应该就没问题了,于是从友盟官网下载最新的插件重新打包并配置,结果还是不行,排除。
  4. 与友盟的客服mm沟通后,mm提醒友盟插件打包ipa的时候需要使用distribution证书,到这一步我突然想起新换了mac好像还没有配置相应的证书,一直都是让xcode自动分配证书的,在配置页面看了下,果然打包时用的都是development证书,把distribution证书配置好后再打包终于没有“Didn`t find info dictionary for ……”错误了,但是打包ipa时还是“Found an unexpected Macn-O header code:0x72613c21”错误。
  5. 根据日志错误信息再次搜索了半天后终于找到了准确的答案,原来是导入第三方sdk时会在Copy Bundle Resources中创建一个对应项,然而框架是不能出现在其中的(好像是这个意思),于是从Copy Bundle Resources中将包含框架的目录删除后再打包就没有问题了。