2014年3月18日 星期二

Static Library

來源: http://iosdevelopersnote.blogspot.tw/2011/04/build-static-library-in-xcode-4.html

這篇文章是要來教大家用 Xcode 4 產生 .a 檔,所謂的 Static Library。
用途就是把自己寫好的程式不想要給對方看到 source code 包成 .a 再加上 .h 這樣一樣對方可以正常使用自己寫好的程式,而且看不到自己寫的 .m 檔。
在這個文章要建立兩個專案,一個是用來產生 .a ,另一個用來測試 .a 是不是成功產生。
LibTest - 這個專案用來產生 .a ( Xcode 自動會產生一個名為 libLibTest.a 的檔案)
UsageTest - 這個專案用來測試 LibTest 產生的 .a
讓我們一步一步來進行

首先開啟一個 Static Library 的專案,如下

然後命名為 LibTest 會在導覽列看到如下

LibTest 這個 Group 裡什麼都沒有
接著我們就要新增一個 Class 打算把這個 Class 的 .m 包成 .a
如下方式新增一個 File
然後新增一個 NSObject 的子類別命名為 LibTest,之後會在導覽列看到。
LibTest.h 和 LibTest.m。之後呢,新增一個 method 在 .h 和其實作在 .m
#import <Foundation/Foundation.h> 
@interface LibTest : NSObject { 
-(void) greeting:(NSString *) message; 
@end
上面是 LibTest.h,下方是 LibTest.m


#import "LibTest.h" 
@implementation LibTest 

-(void) greeting:(NSString *) message{ 
    NSLog(@"Hello %@", message); 
@end
打完之後存檔,接下來要產生 .a 檔了。在產生之前先確定一下 configuration
目的就是要確定這個 scheme 跑的是 release 而不是 debug。確定之後。在 Product -> Build 按下之後就會 Build 這個 Target 然後會產生 .a 如下圖來 Build
重點來了,.a 檔會放在那?Xcode 4 會放在 ~/Library/Developer/Xocde/DerivedData/ 的再接下圖
也就是  ~/Library/Developer/Xocde/DerivedData/<Product Name>/Build/Products/Release-iphonesimulator/ 底下會有一個 .a 如上圖,要記得哦,是 Release 如果是 Debug 開頭,我測過是不能被用的。好記得就好。然後要把這個檔案和 .h 一起放到等一下要開啟的 UsageTest 專案裡。
簡單開始一個 Window-based Application ,Product Name 命名為 UsageTest 就可以了。如下圖
接者把上一個專案產生的 libLibTest.a 和 LibTest.h 一起 copy 到這個專案。如下圖。
然後在 UsageTestAppDelegate.m 的 application:didFinishLaunchingWithOptions: 填上如下的程式碼。


#import "UsageTestAppDelegate.h" 
#import "LibTest.h" 
@implementation UsageTestAppDelegate 
@synthesize window=_window; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    LibTest * libObj = [LibTest new]; 
    [libObj greeting:@"Michael"]; 
[self.window makeKeyAndVisible]; 
return YES; 
// 省略 

}
沒意外的話,Run 就會看到如下成功的畫面。只有 .a 和 .h 就可以成功執行了。




沒有留言:

張貼留言