iOS 中SDK开发注意事项

终端命令:

真机和模拟器上的库文件合并 Framework库合并的是Framework内包含的二进制文件,合并后替换库中的文件,没有.a后缀lipo -create xxx.a(真机)xxx.a(模拟器)-output 新名字.a查看SDK支持的架构lipo -info XXX.a 输出: i386 armv7 x86_64 arm64

注意事项:

1.category的处理

category是项目开发中经常用到的,把category打包成静态库是没有问题的,但是在使用这个静态库时,

调用category中的方法时会发生找不到该方法的运行时错误(selector not recognized),

解决的办法是在使用静态库的工程中配置other linker flags的值为 -ObjC -all_load

2.对图片资源和UI界面xib或nib文件的处理

.a和.framework两种静态库,通常都是把需要用的到图片或者xib文件存放在一个bundle文件中,而该bundle文件的名字和.a或.framework的名字相同。

.a文件中无法存放图片或xib文件,很容易理解,但是.framework从本质上说也是一个bundle文件,为什么不把图片或者xib文件直接放在.framework中而单独再创建个bundle文件呢?

那是因为iOS系统不会去扫描.framework下的图片等资源文件,也不会在项目中显示,也就是说即使放在 .framework目录下,系统根本就不会去扫描,因此也无法发现使用

3.Debug和Release

Debug和Release,在我看来主要是针对其面向的目标不同的而进行区分的。

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。

Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利


Framework 参数配置

点击目标工程>>选择你创建的Framework>>点击工程设置>>做出如下修改 

 Build Settings>>Dead Code Stripping>>设置为NO 

 Build Settings>>Strip Debug Symbol During Copy>>全部设置为NO 

 Build Settings>>Strip Style>>设置为Non-Global Symbols 

 Build Settings>>Base SDK>>Latest iOS(iOS 选择最新的)

 Build Settings>>Link With Standard Libraries>>设置为 NO

 Build Settings>>Mach-O Type>>Static Library 对于Mach-O Type有两种情况:

(1)选择 Static Library 打出来的是静态库;

(2)选择 Relocatable Object File 打出来是动态库。

注意⚠️

如果没有用到info.plist文件可以删除,避免在工程中发生冲突

你可能感兴趣的:(iOS 中SDK开发注意事项)