我的例子是打包MJRefresh
環境OS10.11.4, XCode Version 7.3.1 (7D1014)
生成.a如下:
創建新工程:
把下載的 MJRefresh-master加到你的工程中,如下:
工程顯示如下
3.然後進行如下圖操作
4.你要把compile source這裡的.m文件刪除多余的,僅保留暴露的.h對應的.m,(不然的話,會報文件重復錯誤)如下圖:
5.先生成模擬器的.a包,選中模擬器,然後編譯(command + B)
6.成功後Products下面的.a文件會變成黑色,選中這個 .a 然後右鍵Show in Finder,就可以看到模擬器的.a了,如下圖
真機的.a包也是一樣生成,重復第五步驟就可以。
這樣我們就得到了模擬器和真機的.a包。
下面我們就開始使用,
7.新建工程RefreshDemo,把.a包拖拽到新建工程,刪除要暴露的.m文件,如下圖:
這個時候關鍵一步,設置RefreshDemo工程:other Linker Falg 設置為:-all_load,因為我要暴露的是個category,不設置的話,就會崩潰,報錯為找不到某方法,假如你的.a沒有category就不需要設置了。設置圖如下:
刷新調用代碼是
// 下拉刷新
_listTableView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{ }];
到此,大功告成,運行效果如下:
真機和模擬器都可以使用.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 //為兩個合並後存放的路徑