你的位置:首页 > 操作系统

[操作系统]打包和调试静态库


                              我们接着上一次的讲...

    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拖到你的文件夹里,会自动生成。

      打包和调试静态库就到这了!!