iOS 静态库a文件的打包 上

        iOS 静态库的打包,网上一搜一大把,结果复合你条件的有木有?哈哈,没有!那看看我这可以不?(纯粹经验总结,又不对的地方,欢迎大神吐槽,哈哈...)


        第一步:把你的桌面所有的Xcode项目关掉(免得和其他项目混淆),之后用Xcode新建 并给起个名字(我起的HelloA),如下图


                        

        

         之后点击next ,选一个目录点击create,可以看到如下(忘记说了,我是用的Xcode5.1)

          

       

    重点看看这里

    

    好多情况下会出现这样的问题:

   Undefined symbols for architecture armv7s:
  "_OBJC_CLASS_$_XXXX", referenced from:
      objc-class-ref in   xxxxx.a(xxxxx.o)
   ld: symbol(s) not found for architecture armv7s


   再说上面问题之前先来说说armv6,armv7,armv7s,arm64这个是什么呢?arm熟悉吧,是品牌做CPU的 (最先进的数据集),(v+数字)是型号

,当然型号越是靠后,代表CPU越先进,还有先进的CPU一般不会舍弃老功能的(向前兼容)。知道这个,我们在来看看上面的错误,引用自XX.a静态库的XX类不支持armv7s指令这个地方选择了(最高)armv7,所以当你把你打包好的a文件引入到新项目中(人家是先进的arm v7s啊),就会报这个支持7s的框架,就好像你非要那iphone5的手机壳来装iphone4s,肯定会出问题的,记住要匹配。


     第二步:来看看工程给我们自动生成文件HelloA.h/m 两个文件,同时还给我们自动生成了HelloATests文件夹(Xcode5.0以上,单元测试就自动生成了,可以手动删掉的,对打包没有影响)。点开Products 你会看到红色文件,其中那个a就是我们要的静态库,那如何生成,请记住再生成之前还有一件事情要做,这个事情很重要:看这里好多人这个属性没有设置,或者不知道的设置了yes或者NO结果出现莫名奇妙的问题,这里我重点说一下:这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。而设置为no时,会编译所有的版本。你在想这句话是什么意思对吧?举个个例子,如果你打包时候设置的是YES,而你用iphone4编译出来的是armv7(你当前手机的CPU是这个数据集)版本的,那么只有是armv7手机才能运行(我有点晕了),或者之前的老数据集(如arm v6等),选择NO则编译你选择的所有版本。建议一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。

  第三步:这里我们选择NO。在HelloA.h文件中声明一个函数helloWorld ,在m中实现,到这里请选择

这里建议不要连设备(也不知道谁规定的),command+b运行,看,右击a文件,看,这就是a文件和头文件,那你会问头文件是怎么来呢,我以后要加怎么加呢,看这里,在copy files地方点击+号就可以添加了。(这个a文件是真机的,如果你不选择真机,只要在运行的地方改变一下成模拟器,生成文件就是模拟器a文件,你肯可能会问,能不能同时打出来模拟器和真机的,答案是不能,不过你可以把打包出来两个a文件合并在一起,具体,大哥你狗狗啊,度娘啊)

第四步,我们来引用一下这个文件,新建一个项目如图直接把a文件和头文件拖进项目。

第五步,在viewcontroller.m,看图

第六步,关于如何引入资源bundle,下节接着讲,讲的不对的地方可以给我吐槽,我qq:759448747,iOS超级大群:28926427

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值