file→ new→ project, 彈出框中選擇iOS→ framework & library中的cocoa touch static library.點擊Next,輸入product name: TestFramework, 點擊Next→ 點擊Create.android
2.刪除嚮導所生成工程中的Target.ios
點擊工程名→ 點擊TARGETS → 右鍵Delete.xcode
3.增長一個新的Target.app
點擊Target底部的"+"號,彈出框中選擇OS X→ Framework & Library中的Bundle.點擊Next,輸入product name TestFramework, 點擊Finish.iphone
4.修改新建 Target 的 Building Settings 項.post
a: 選中TARGET→ Build Settings項, 將Architectures→ Base SDK 改成Latest iOS(iOS 9.0), 將Architectures 改成 $(ARCHS_STANDARD);ui
b: 在 Deployment項, 選中"Mac OS X Deployment Target", 點擊鍵盤上的Delete鍵, 將「Targeted Device Family」改爲"1,2";spa
c: 在 (null) - Deployment項, 修改"iOS Deployment Target"爲"6.0",同時修改PROJECT的info下的Deployment Target → "iOS Deployment Target"爲"6.0";.net
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.將要寫入靜態庫的源碼文件拖入工程目錄, 這裏以一個簡單的語句輸出做爲例子
Command+N 新建一個cocoa Touch class, 名字爲TestLog, 點擊Next, 點擊create;
TestLog.h代碼以下:
7.刪除TestFramework.m, 修改TestFramework.h內容以下:
選中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/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphoneos/TestFramework.framework/TestFramework /Users/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphonesimulator/TestFramework.framework/TestFramework -output NewTestFramework
在Products目錄下會生成一個NewTestFramework的文件, 將該文件拷貝覆蓋TestFramework.framework目錄下的TestFramework文件, 新的TestFramework.framework就是真機和模擬器通用的framework.