我们接着上一次的讲...
1.上一次说过,真机的静态库只能在真机上用,模拟器的静态库只能在模拟器上用,所以,就先讲一下生成了真机和模拟器的.a静态库后,怎样避免来回拖拽真机和模拟器的静态库到工程里,也就是直接拖拽一个静态库就行。
解决方法:利用命令行语句
1.切换路径,到Products目录下
2.合并静态库
这句命令行理解起来并不难,我大体说一下,lipo -create 要合并的静态库1 要合并的静态库2 -output 合并后的静态库文件名,注意,默认保存到当前目录下。
这样合并完的静态库就搞好了,只要把lib中的静态库替换成这个staticDemo.a的静态库,然后拖入你的工程中就可以随意用了。不过,由于是合并的静态库,大小肯定并比合并之前的大,会让你的项目也跟着变大,所以在真实项目要打包的时候最好还是根据需求来,这里只是告诉大家这么一个办法可以解决,自己平常可以用。
2.上一个图,我们能注意到我们生成的静态库文件夹都是Debug-xxx,这个Debug代表的是调试,还有一种发布Release状态,那如何生成呢?
然后在分别在模拟器和真机下Command+B一下,就可以生成了。生成后显示如下图:
Release的用法和Debug的基本一致。那么他们两个有什么区别呢???
比较正经的说法是:
调试版本会包含完整的符号信息,不会对代码进行优化。
发布版本不会包含完整的符号信息,代码是会进行优化的。
比较通俗的说法是:调试版本会把你程序中的NSLog这样的打印语句也会执行,而发布版本就不会。
3.调试静态库
现在我们Command+R运行一下,会出现两个错误。
怎么解决呢?(解决完就可以调试我们的静态库函数了)
很简单,只要配置一下就好了,如图:
加完这两项就真的ok啦!
4.打包.framework和.a的步骤很像。等有时间我在更新一个.framework的,说一下注意点就行啦。
.framework和.a的区别就是.framework不需要你手动将.h和bundle拖到你的文件夹里,会自动生成。