手把手教iOS生成.a包及常见的问题

我的例子是打包MJRefresh

环境OS10.11.4,  XCode Version 7.3.1 (7D1014)

生成.a如下:

  1. 创建新工程:

    09D889DE-1DAD-4CD6-8835-2650BDC8AF6A.png

     

  2. 把下载的 MJRefresh-master加到你的工程中,如下:

屏幕快照 2016-08-12 下午5.14.49.png

 

 

 

 

 

 

 

 

 

 

 

 

 

工程显示如下

B1F083FB-B5F2-4FA4-8C26-3A86B8628CD2.png

3.然后进行如下图操作

DCA4DCA6-E766-42F4-99BC-98E839B25AD5.png

 

4.你要把compile source这里的.m文件删除多余的,仅保留暴露的.h对应的.m,(不然的话,会报文件重复错误)如下图:

417E8C9D-27AD-40C9-935F-694D020AE85A.png

5.先生成模拟器的.a包,选中模拟器,然后编译(command + B)

F84DD35F-E75D-4B56-8B04-A47DC534558D.png

 

6.成功后Products下面的.a文件会变成黑色,选中这个 .a 然后右键Show in Finder,就可以看到模拟器的.a了,如下图

13DC5E01-7AB3-447D-A97D-0D957507C6D1.png

真机的.a包也是一样生成,重复第五步骤就可以。

这样我们就得到了模拟器和真机的.a包。

 

 

下面我们就开始使用,

7.新建工程RefreshDemo,把.a包拖拽到新建工程,删除要暴露的.m文件,如下图:
49A2DF91-1101-437D-B936-4C544122F89E.png

这个时候关键一步,设置RefreshDemo工程:other Linker Falg 设置为:-all_load,因为我要暴露的是个category,不设置的话,就会崩溃,报错为找不到某方法,假如你的.a没有category就不需要设置了。设置图如下:
A9ABE345-A906-4A4F-A2A1-BC61979044F0.png

刷新调用代码是   

// 下拉刷新

1
2
    _listTableView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
    }];

到此,大功告成,运行效果如下:

1.png

真机和模拟器都可以使用.a文件可以合并成为一个.a文件 使用终端合成具体方法如下:

终端代码如下:
lipo -create /iOS/Debug-iphoneos/librefreshDemoStaticLibrary.a /iOS/Debug-iphonesimulator/librefreshDemoStaticLibrary.a  -output SQY/iOS/libGamePus.a其中SQY/iOS/iphoneos/libGamePlusAPI.a //为真机库。  
 /iOS/iphonesimulator/librefreshStaticLibrary.a //为模拟器库 
 -output /iOS/librefreshStaticLibrary.a //为两个合并后存放的路径

posted @ 2016-08-31 08:36  Jack~Bai  阅读(658)  评论(0编辑  收藏  举报