xcode 打包静态库

  1. 静态库工程创建ios

    打开xcode --> 新建工程  --> 选择工程类型为library  --> 肯定
xcode

    

  2.工程配置  架构

     点击工程中-->ios device(选择edit scheme) --> 点击info  --> run (选择release 或者debug)--> ok
iphone

    target --> building setting --> archciture  active only  设置为no
ui

    编译运行--> xcode 的product 中点击菜单--> show in finder 找到编译的静态库。
spa


  3. 注意事项.net

    静态库通常分为模拟器和真机两种 
debug

    模拟器是i386架构,真机是你当前打包时候使用的手机的架构
code

    iPhone 手机cpu 架构类型
orm

    armv6 :iphone iphone2 iphone3G

    armv7 :iphone3Gs  iphone4   iphone4s 

    armv7s :iphone5 iphone5c

    arm64 :iphone5s iphone6 iphone6p iphone6s iphone6sp

    4.查看lib库的信息    

    命令是:lipo -info libPrint.a,能够看到显示的结果是:Arch是  Arm7。下面我会具体介绍一下。

    5.有时候能够看到undefine symbols for architecture i386这样的错误

其实这个错误缘由很简单,就是由于,咱们用错了编译出来的xxx.a lib;在模拟器里面,咱们须要的是基于i386构架编译的static lib,可是这个a文件,你们还记得前面说的arm6 arm7构架的么。这个a实际上是在iphone这个arm构架上运行的代码。其实show in finder指向的是一个ios device的库,并非i386模拟器下的库。那如何编译i386的库呢?咱们将这个iOS Device修改为iPhone5.0 Simulator。在进行编译,这样就能够编译出i386下面的库。这个时候咱们show in finder打开的文件夹仍是ios device下的库。咱们最好本身去那个目录下看一下。这里咱们用command去查看了一下目录状况,以下:能够看到一个iphoneos的目录和一个simulator的目录。

而后咱们再看看这个目录与第4条所示的目录有什么不一样! 一样也有一个libPrint.a文件。

6.lib 错误缘由,

Release-iphoneos里面的是基于arm6 arm7编译出来的库文件。Release-iphonesimulator文件夹下面的是基于i386编译出来的文件。

7.合并.a文件,制做通用静态库

这二个库一个是用于真机运行的一个是用于模拟器运行的.其实咱们能够利用lipo将这二个文件打包成一个通用的a文件。命令以下:

/Users/user/Library/Developer/Xcode/DerivedData/UITab-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products替换成你的路径。 

/Users/user/Desktop/xxx.a替换成合并后的路径。 

lipo -create path1/真机/xxxt.a  path2/模拟器/xxx.a  -output /Users/pjk1129/Desktop/xxx.a


连接:http://blog.csdn.net/kepoon/article/details/21516977

相关文章
相关标签/搜索