最近不小心将手机的系统升级到10.3.1,随之也带来了一个问题:为了真机测试,Xcode也要升级到8.3,我之前的Xcode版本是8.2.1,工程代码完全一样的情况下,在Xcode8.2.1完美运行,但在8.3.2中却报了Apple Mach -O Linker(Id)Error :Linker command falied with exit code 1 (use -v to see invocation) 和Invalid bitcode signature的错误,在网上找了很久,知道可能导致这个错误的原因有很多,下面对网友解决这个问题的方式进行一个汇总。
1.如果是XCode 8.3 工程的Tests模块,编译提示Apple Mach-O Linker (Id) Errors错误
解决办法就是将工程中的所有的Deployment Target改为8.0
2.可能是工程中所使用的第三方的SDK旧版本导致(尤其是工程有使用环信的),及时更新旧的第三方库可解决。经常更新工程中的第三方库还是很有必要的,使用第三方库较多的话,通过cocoapods管理更新能省事不少。
3.右键点击报错信息,选择“reveal in log”,查看错误的log,有可能是Xcode缓存文件的的问题,将/Users/mymac/Library/Developer/Xcode/DerivedData/路径下的对应的报错的缓存文件删除,然后clean一下自己的工程,再运行就行了。
4.检查工程中有没有错误的import进去.m文件,还有检查Target->Build Phases->Compaile Sources 有没有重复或者漏掉的.m文件。
5.注意bitcode设置为NO,还有Build Active Architecture Only和Valid Archetectures的设置