1.首先在xcode下新建cocoa touch framework工程:html
2.新建好工程後,往裏面添加要封裝的代碼,而且把包含公有api的頭包含到自動生成的頭文件裏面api
或者到Build Phases下Headers裏面把公有頭文件放到public下xcode
3.在Build Setting——>Linking找到Mach-O Type 把值:Dynamic Library改成:Static Library,缺乏這一步生成的framework就是動態庫iphone
4.找到Edit scheme在run——>info下把build configure的值由默認值Debug 改成Releaseui
5選擇要編譯的硬件環境:分別在Generic IOS Device和 iPhone 6s Plus(選擇最新的模擬器)下編譯一次,編譯完後就能夠看到工程的products文件下的xxx.framework由紅色變成黑色(注意:若是隻編譯了iphone 6s Plus模擬器,沒有編譯 Generic IOS Device ,那麼xxx.framework仍是不會變成黑色).net
6.xxx.framework 變成黑色後,選中xxx.framework右鍵show in finder 就能夠看到生成的framework靜態庫。分別有Release-iphoneos真機版和Release-iphonesimulator模擬器版,也就是說生成的版本只能分別在各自的硬件環境下使用。code
7.合併真機和模擬器版framework靜態庫,這樣就能夠在模擬器和真機下使用了,不過要注意生成的靜態庫的大小等於真機版和模擬器版的大小的和,因此要對程序進行縮小時,能夠只用其中一個版本htm
使用xcode自帶的lipo能夠合併兩個版本:在終端下使用命令:lipo -create /User/...../release-iphoneos/xxx.framework/xxx /User/...../release-iphonesimular/xxx.framework/xxx -output ./xxx教程
其中xxx爲你的庫的名稱,路徑爲生成的靜態庫的路徑,而後把生成的xxx放到真機或者模擬器版的xxx.framework裏面替換裏面原有的xxx庫ip
使用命令lipo -create xxxx/tgfmwk xxxxx/tgfmwk -output tgfmwknew
其中xxxx表示路徑,一個是真機的tgfmwk所在路徑,一個是模擬器tgfmwk文件所在路徑,而後輸出tgfmwknew新的文件。輸出後,只須要將這個tgfmwknew重命名爲tgfmwk而後覆蓋原來的tgfmwk 文件便可。把覆蓋後的這個tgfmwk.framework考出來到具體使用的項目就能夠實現真機和模擬器通用的framework 了。
eg:
Release-iphonesimulator admin$ lipo -create /Users/admin/Library/Developer/Xcode/DerivedData/StaticFrameworkCreate1-gqxloizppzktxkebiqgkcdykvutr/Build/Products/Release-iphonesimulator/StaticFrameworkCreate1.framework/StaticFrameworkCreate1 /Users/admin/Library/Developer/Xcode/DerivedData/StaticFrameworkCreate1-gqxloizppzktxkebiqgkcdykvutr/Build/Products/Release-iphoneos/StaticFrameworkCreate1.framework/StaticFrameworkCreate1 -output StaticFrameworkCreate1New
http://www.jb51.net/article/91273.htm iOS製做framework靜態庫教程
http://www.360doc.com/content/14/1215/17/19175681_433147141.shtml 合併靜態庫Framework方法