[轉(zhuǎn)]
1.新建一個靜態(tài)庫工程.
file→ new→ project, 彈出框中選擇iOS→ framework & library中的cocoa touch static library.點擊Next,輸入product name: TestFramework, 點擊Next→ 點擊Create.
2.刪除向?qū)晒こ讨械腡arget.
點擊工程名→ 點擊TARGETS → 右鍵Delete.
3.增加一個新的Target.
點擊Target底部的"+"號,彈出框中選擇OS X→ Framework & Library中的Bundle.點擊Next,輸入product name TestFramework, 點擊Finish.
4.修改新建 Target 的 Building Settings 項.
a: 選中TARGET→ Build Settings項, 將Architectures→ Base SDK 改為Latest iOS(iOS 9.0), 將Architectures 改為 $(ARCHS_STANDARD);
b: 在 Deployment項, 選中"Mac OS X Deployment Target", 點擊鍵盤上的Delete鍵, 將“Targeted Device Family”改成"1,2";
c: 在Deployment項, 修改"iOS Deployment Target"為"6.0",同時修改PROJECT的info下的Deployment Target → "iOS Deployment Target"為"6.0";
d: 在Linking項, 將"Dead Code Stripping" 改為"NO", "Link With Standard Libraries" 改為 "NO", 將 "Mach-O Type" 改為"Relocatable Object File";
f: 在Packing項, 將"Wrapper Extension" 改為 "framework";
5.修改 Target 的 Info 項.
點擊Info, 將 "Bundle OS Type code" 改為 "FMWK"
6.將要寫入靜態(tài)庫的源碼文件拖入工程目錄, 這里以一個簡單的語句輸出作為例子
Command+N 新建一個cocoa Touch class, 名字為TestLog, 點擊Next, 點擊create;
TestLog.h代碼如下:
view plain copy 在CODE上查看代碼片派生到我的代碼片
#import <Foundation/Foundation.h>
@interface TestLog : NSObject
- (void)TestLog;
@end
TestLog.m代碼如下:
view plain copy 在CODE上查看代碼片派生到我的代碼片
#import "TestLog.h"
@implementation TestLog
- (void)TestLog
{
NSLog(@"這里是靜態(tài)庫輸出日志\n");
}
@end
7.刪除TestFramework.m, 修改TestFramework.h內(nèi)容如下:
[objc] view plain copy 在CODE上查看代碼片派生到我的代碼片
#ifndef TestFramework_h
#define TestFramework_h
#import <TestFramework/TestLog.h>
#endif
8.暴露Headers供外部項目調(diào)用接口.
選中Target下的Build Phases, 點擊左上角"+"號→ "New Headers Phase", 展開Headers, 點擊左下角"+", 選擇"TestFramework.h"和"TestLog.h"→ 點擊add, 將這兩個頭文件拖動到上方Public下.
9.然后分別在iOS Device 和 iOS Simulator 下編譯.
在Window→ Projects中左邊選擇TestFramework工程, 點擊右邊的Derived Data右邊的箭頭,打開Finder, 在../Build/Products目錄下有真機和模擬器生成的TestFramework.framework
10.合并Framework.
打開終端, 輸入:
cd /Users/Android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products, 回車;
注意:路徑僅為示意
可以輸入lipo -info XXX 來查看庫的信息, armv7 arm64的是真機, X86_64的是模擬器;
輸入命令:
lipo -create /Users/qiuxinpeng/Library/Developer/Xcode/DerivedData/TestFramework-fbsabrufooufevekcmufbujjyjau/Build/Products/Debug-iphoneos/TestFramework.framework/TestFramework /Users/qiuxinpeng/Library/Developer/Xcode/DerivedData/TestFramework-fbsabrufooufevekcmufbujjyjau/Build/Products/Debug-iphonesimulator/TestFramework.framework/TestFramework -output /Users/qiuxinpeng/Library/Developer/Xcode/DerivedData/TestFramework-fbsabrufooufevekcmufbujjyjau/Build/Products/NewTestFramework
在Products目錄下會生成一個NewTestFramework的文件, 將該文件拷貝覆蓋TestFramework.framework目錄下的TestFramework文件, 新的TestFramework.framework就是真機和模擬器通用的framework.