1.新建一個(gè)靜態(tài)庫(kù)工程
file→ new→ project, 彈出框中選擇iOS→ framework & library中的cocoa touch static library.點(diǎn)擊Next,輸入product name: TestFramework, 點(diǎn)擊Next→ 點(diǎn)擊Create
2.刪除向?qū)晒こ讨械腡arget
點(diǎn)擊工程名→ 點(diǎn)擊TARGETS → 右鍵Delete
3.增加一個(gè)新的Target
點(diǎn)擊Target底部的"+"號(hào),彈出框中選擇OS X→ Framework & Library中的Bundle.點(diǎn)擊Next,輸入product name TestFramework, 點(diǎn)擊Finish
4.修改新建 Target 的 Building Settings 項(xiàng)
a: 選中TARGET→ Build Settings項(xiàng), 將Architectures→ Base SDK 改為L(zhǎng)atest iOS(iOS 9.0), 將Architectures 改為 $(ARCHS_STANDARD);
b: 在 Deployment項(xiàng), 選中"Mac OS X Deployment Target", 點(diǎn)擊鍵盤上的Delete鍵, 將“Targeted Device Family”改成"1,2";
c: 在 (null) - Deployment項(xiàng), 修改"iOS Deployment Target"為"6.0",同時(shí)修改PROJECT的info下的Deployment Target → "iOS Deployment Target"為"6.0";
d: 在Linking項(xiàng), 將"Dead Code Stripping" 改為"NO", "Link With Standard Libraries" 改為 "NO", 將 "Mach-O Type" 改為"Relocatable Object File";
e: 在Packing項(xiàng), 將"Wrapper Extension" 改為 "framework";
5.修改 Target 的 Info 項(xiàng)
點(diǎn)擊Info, 將 "Bundle OS Type code" 改為 "FMWK"
6.將要寫入靜態(tài)庫(kù)的源碼文件拖入工程目錄, 這里以一個(gè)簡(jiǎn)單的語句輸出作為例子
Command+N 新建一個(gè)cocoa Touch class, 名字為TestLog, 點(diǎn)擊Next, 點(diǎn)擊create;
TestLog.m:
7.刪除TestFramework.m, 修改TestFramework.h內(nèi)容如下:
8.暴露Headers供外部項(xiàng)目調(diào)用接口.
選中Target下的Build Phases, 點(diǎn)擊左上角"+"號(hào)→ "New Headers Phase", 展開Headers, 點(diǎn)擊左下角"+", 選擇"TestFramework.h"和"TestLog.h"→ 點(diǎn)擊add, 將這兩個(gè)頭文件拖動(dòng)到上方Public下
9.然后分別在iOS Device 和 iOS Simulator 下編譯.
在Window→ Projects中左邊選擇TestFramework工程, 點(diǎn)擊右邊的Derived Data右邊的箭頭,打開Finder, 在../Build/Products目錄下有真機(jī)和模擬器生成的TestFramework.framework
10.合并Framework.
打開終端, 輸入:<pre><code>
cd /Users/Android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products
</code></pre> 回車;
可以輸入<pre><code>lipo -info XXX</code></pre> 來查看庫(kù)的信息, armv7 arm64的是真機(jī), X86_64的是模擬器;
輸入命令:<pre><code>
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
</code></pre>在Products目錄下會(huì)生成一個(gè)NewTestFramework的文件, 將該文件拷貝覆蓋TestFramework.framework目錄下的TestFramework文件, 新的TestFramework.framework就是真機(jī)和模擬器通用的framework