不好意思,标题有点长了,今天拾起了一个老项目,调试了一下,出现如下错误。
惯例Google了一下,搜索的关键字为:invalid bitcode signature,解决的方案很多,如下所示:
invalid bitcode signature解决方案
1.Clean重启
首先要做的就是网管的终极套路,关机重启,所以我们遇到问题当然就是Clean Project and Build,不行就Restart Xcode,其实很多莫名奇怪的问题都可以通过这样的方案搞定,毕竟Xcode确实bug不少,不知道是不是我的mac性能差,我的Xcode就经常出现找不到头文件或者联想不出关键字的问题。
2.修改Bitcode检测
3.Build Active Architecture Only设置
我把所有的组合搭配都试过了,Debug -> YES/NO,Release -> YES/NO,各种搭配,各种配搭,无奈,It doesn't work。
4.删除DerivedData文件夹
打开xcode找到Products文件夹 -> Products文件夹里的.app文件,show in Finder 选择三栏显示模式 -> 往前滑找到DerivedData文件夹, 删除 。
It doesn't work。
5.Custom Compiler Flags
在Building Seting -> 中 -> Custom Compiler Flags加 -> -fembed-bitcode
It doesn't work。
至此,基本上Google上所有的方案都是这几个,然而都没有解决我的问题,所以果断换关键字搜索,也就是linker command failed with exit code 1,可能出现的两个Error都是因为linker command failed with exit code 1。
linker command failed with exit code 1解决方案
1,看看是不是有新添加的文件跟之前文件同名
2,错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。
3.SVN或git忽略了某些文件,如.o 等文件没能update下来,查看.o文件可能是红色的,可以重新添加或者修改SVN(git)的忽略设置
4.把.a文件删除再重新拖到项目中解决问题
5.可能重复添加了文件(也可能没勾选 Copy items if neded 这个选项),建议删除后重新添加
6.工程中文件名重复了 也会出现同样的错误
7.”Build Settings”->”Enable Bitcode”设置为NO ,因为有些SDK不支持Bitcode
8.可能在引用的时候 可能写的是#import "XXXXX.m" ,如果是改为#import "XXXXX.h"
9.可能你导入的SDK只能在真机下才能运行,模拟器会报错!
10.找到 Build settings->Linking->Other Linker Flags将此属性修改成-all_load 或者 -ObjC
11.Build settings->Search Path->Library Search Paths 添加静态库的相应路径
我的解决方案
以上方案我基本上都做了,无奈还是没搞定,我就在猜测是不是静态库版本的问题,因为我的Xcode已经升级到了最新的版本,而项目是挺老的项目了,所以秉承着打破砂锅问到底的精神果断去下载老版本的Xcode,通常我们可以在App Store应用商店中免费下载Xcode的最新版本,但如果我们想要获取特定版本呢?苹果在开发者网站中提供了历史所有版本的系统和开发工具的下载,网址:https://developer.apple.com/download/more/。
幸运的是公司的网络比较快,Xcode7很快下载下来了,然后及时如何让两个版本共存,其实直接给Xcode改名即可,可以一个版本保留原名,另一个版本加上版本号。也可以给多个版本都加上版本号,例如Xcode7和Xcode8。需要注意的是,如果你有使用第三方开发工具,请尽量避免在名称中出现空格。
Xcode安装好了以后,果断真机调试,你猜的没错Could not find Developer Disk Image,公司最低版本的手机为iOS 9.3.5的iPhone4s,而我下载的Xcode7最高支持的设备为iOS 9.0,此时解决的办法有两个,要么升级Xcode,要么下载该Disk Image,两者相比较当然是厚颜无耻的去问别人要了一个9.3版本的Disk Image,然后放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport目录下,重启Xcode,编译运行通过。