在工作中,采用XCODE编译IOS客户端sdk,在此记录使用XCODE的一些事项(我所采用的xcode版本为11.6)
1.打开项目,打开xcodeproj
2. 编译工程,点击左上角的编译符号
3. 真机编译vs模拟机编译
在进行编译之前,最好先进行clean,防止之前编译的中间文件造成影响,
- clean 方式:cmd+shift+K或者菜单栏 product--clean build Folder
- 真机编译:左上角选择架构为
,编译完成后,可用lipo -info查看处理器类型,应为armv7, armv7s, arm64
- 模拟机编译:可选择储真机编译架构以外的其他架构,编译后的架构类型i386,x86_64
注:真机编译时,注意targets-->Vaild Architecture-->不能包含i386,x86_64,否则会报cdefs.h不支持架构类型的错误,编译过程中遇到的坑,在网上查了好久
真机编译和模拟机编译后的包,采用lipo -create进行结合
lipo -create 真机包 模拟机包 -o 输出文件包
4. 文件夹为蓝色或黄色的区别?
- 蓝色文件夹:作为资源夹使用,与黄色文件夹的区别是不参与编译,所以如果在此文件夹下的代码不参与编译,其他文件不能直接引用,蓝色文件的添加方式,右键-->add files to-->
- 黄色文件夹:以group的方式引入,会参与代码的编译,以group方式添加后,可在 targets-->build phrases-->Complie Sources里找到相应代码,说明能够加入编译,蓝色文件夹添加方式,右键-->add files to-->
注:这里也是遇到的坑之一,由于新增了个代码文件,刚开始是以蓝色文件夹方式引用的,最后会和其他代码会编译成静态库.a文件,但是其他framework在引用这个.a文件时,调用新增蓝色包所包含的代码文件会出错,undefined symbol for armv7 ..., 原因就是蓝色的包没有被编译进去,调用不了,重新按照黄色文件夹的方式引入编译后便可解决。