靜態庫.a文件其實就是不公開源代碼,是經過編譯后的二進制文件,看不到具體實現,現在就教大家創建并使用一個.a文件。話不多說。
打開Xcode,點擊File\New\Project,選擇iOS\Framework and Library\Cocoa Touch Static Library新建一個靜態庫工程.
將工程命名為sdk_test,然后將工程保存到一個空錄下。這時候的.a文件還是紅色的
接著我們簡單寫一些實現的方法
@interface sdk_test : NSObject
/**
測試專用
*/
+(void)test;
@end
#import "sdk_test.h"
@implementation sdk_test
+ (void)test{
NSLog(@"hello world!!1");
}
@end
接下來就生成靜態庫
1、靜態庫分為手機和模擬器兩種(手機端的只有手機能調用,模擬器的只有模擬器能調用)。
首先,構建模擬器的靜態庫,如圖 comment + R
然后show in Finder 如圖
之后我拿到這個.a文件 還有和他相關的所有.h文件,存放在一個新的文件夾里(SDKtest)并拉入到新的test1工程里面進行測試調用test方法打印出了hello world!!1我們也看不到他的實現文件。如圖
你以為這樣就完事了嗎。上面已經提到了,只能在模擬器上運行,如果我們鏈接手機:
由于我們生成.a文件的時候,是生成的模擬器版本的,想要在手機上用就要生成手機版本.
改成Device 構建構成(command + R)重復之前的步驟 就可以在手機上運行了
接下來,我們就來生成一個手機和模擬器都可以運行的sdk打開終端
lipo(空格)-create(空格) 模擬SDK拖進來 真機SDK拖進來 -output (空格) 兩個合并后存放的路徑
zhengmingxiangdeMac-mini:Desktop zhengmingxiang$ lipo -create /Users/zhengmingxiang/Library/Developer/Xcode/DerivedData/sdk_test-fnvocgycynptqletvvonoyrmdsty/Build/Products/Debug-iphoneos/libsdk_test.a /Users/zhengmingxiang/Library/Developer/Xcode/DerivedData/sdk_test-fnvocgycynptqletvvonoyrmdsty/Build/Products/Debug-iphonesimulator/libsdk_test.a -output /Users/zhengmingxiang/Desktop/libSDKtest.a
zhengmingxiangdeMac-mini:Desktop zhengmingxiang$
最后拿到的libSDKtest.a 就可以通用了!