ios中靜態庫的建立和使用、製做通用靜態庫(Cocoa Touch Static Library)

 建立靜態庫可能出於如下幾個理由:html

1.你想將工具類代碼或者第三方插件快捷的分享給其餘人而無需拷貝大量文件。
2.你想讓一些通用代碼處於本身的掌控之下,以便於修復和升級。
3.你想將庫共享給其餘人,但不想讓他們看到你的源代碼
ios

 

Xcode6建立靜態庫詳解(Cocoa Touch Static Library)xcode

 

一。建立靜態庫文件

打開Xcode, 選擇File ----> New ---> Project。 新建工程。架構

選擇iOS ----> Framework & Library ---> Cocoa Touch Static Library。app

點擊Next。建立工程工具

 

 

 

工程目錄:測試

 

在頭文件StaticTest1.h中聲明方法ui

#import <Foundation/Foundation.h>

@interface StaticTest1 : NSObject

-(void)testStaticLib;

@end

  

 

在StaticTest1.m中實現方法spa

#import "StaticTest1.h"

@implementation StaticTest1

-(void)testStaticLib
{
    NSLog(@"This is a static library test");
}

@end

  

二。建立通用靜態庫

經過xcode編譯出的靜態庫.a文件由於支持的cpu架構不一樣而分爲iOS Device真機(armv7 arm64), iPhone5(i386),iPhone5s(x86_64)等版本,各個版本的.a文件不能混用,爲了解決這個問題須要製做通用的靜態庫文件插件

 

依次使用iOS Device -> iPhone5 ->iPhone5s在Products目錄下生成libStaticTest1.a文件(文件名從紅色變爲黑色既爲編譯成功),必須先編譯iOS Device的.a文件,否則可能編譯不經過

 

經過右鍵.a文件->show in finder 找到文件libStaticTest1.a,依次重命名libStaticTest1s.a,libStaticTest15.a,libStaticTest15s.a, 名字能夠隨意

 

使用mac下的終端命令行工具執行合併語句

lipo -create /Users/outeki/Desktop/libStaticTest1s.a /Users/outeki/Desktop/libStaticTest15s.a /Users/outeki/Desktop/libStaticTest15.a -output /Users/outeki/Desktop/test.a
文件路徑能夠隨意放置,我將文件都放在了桌面上方便寫合併語句,注意三個文件路徑都用空格分開,/Users/outeki/Desktop/test.a既爲生成的通用靜態庫文件

 

若是你不知道每一個.a文件支持的系統,能夠經過lipo -info命令行來查看具體信息

lipo -info /Users/outeki/Desktop/libStaticTest1s.a

  

 若是須要將通用靜態庫分離成各個版本的靜態庫,能夠參考文章 http://www.cnblogs.com/wengzilin/p/3800856.html

三。使用靜態庫

新建一個ios項目,並建立lib文件夾,將頭文件StaticTest1.h和test.a文件加入項目

 

在ViewController.m中import頭文件,便可使用頭文件中定義的方法了

#import "ViewController.h"
#import "StaticTest1.h"

@interface ViewController ()

@end

@implementation ViewController
            
- (void)viewDidLoad {
    [super viewDidLoad];
    
    StaticTest1 *test = [[StaticTest1 alloc] init];
    [test testStaticLib];
    
}

@end

  

測試輸出:

 

四.知識補充

到此靜態庫的介紹基本結束,若是你想自定義靜態庫的頭文件,能夠在靜態庫工程中新建一個新的.h頭文件,用其替換掉copy file中配置的默認.h頭文件

添加Public.h頭文件

 

在public.h中引入能夠公開的頭文件

#import "StaticTest1.h"

  

在配置文件Build Phases ->Copy File中修改公共接口文件 (Xcode5之前是Copy Header)

 

Command+R執行工程便可獲得對應的.h和.a文件

 

 

 

如何使用workspace管理靜態庫源碼和原生app代碼將在下一篇討論

相關文章
相關標籤/搜索