ios中我們寫的代碼有時不願意讓別人看到,可能對它進行封裝,生成一個靜態庫如典型的.a,還有一種就是和
蘋果自帶的庫一樣的後綴名爲.framework的庫,個人推薦使用.framework,因爲.a不僅要裝其添加進去,還要
將對應的頭文件添加到項目中。
1.新建一個靜態庫工程。file--new--project,彈出框中選擇Ios--framework&library中的cocoa touch static library.點擊NEXT。輸入product name,這裏爲libZW.
2.刪除嚮導所生成工程中的Target:
刪除目標後工程狀態
3.刪除舊目標對應的工程文件夾:
刪除前:
刪除前,注意,此處刪除會彈出提示框,要選擇"只刪除引用"
刪除後如下圖
4.刪除舊目標對應的編譯設置(Product菜單|Edit Scheme命令):
點擊左下角的Manage Schemes按鈕:刪除後如下圖
點擊OK返回
5.增加一個新目標,點擊下面的Add Target
在彈出的對話框中選擇Mac OS X下的Bundle
如上圖,給庫取一個名字,保持默認的Framework(CoreFoundation),然後點擊Finish.
6.修改新目標的工程設置.選中TARGETS中對應的目標,Build Setting頁:在Architectures下將“Base SDK”
改爲"Lastest iOS",然後將"Architectures"改爲"Standard":
在Deployment下,將"Mac OS X Deployment Target"改成“Compiler Default”,將“Targeted Device Family”改成
需要的,此處改成了"iPhone/iPad",同時可以根據需要修改"iOS Deployment Target",此處改爲了"iOS 4.3":
在 Linking 中,將 “Dead Code Stripping” 改爲 “NO”,將 “Link with
Standard Libraries” 改爲 “NO”,將 “Mac-O Type” 改爲 “Relocatable Object File”:
在 Packaging 中,將 “Wrapper Extention” 改爲“framework”:
7、修改目標的
Info。點擊 Info:
將 “Bundle
OS Type Code” 改爲 “FMWK”(Framework 的意思):
8、修改預編譯頭:
9.往項目中拖進工具類,或新建類具體的我就不多說了如圖
10.導出相關文件。選中Target,點擊Build Phases,然後點擊右下角的"Add Build Phase"
在彈出的菜音中選擇"Add Copy Header",添加完成後, 展開"Copy Headers",下面有Public、Priviate、Project三個子項:
然後點擊下面的+號,從項目中選擇頭文件,點擊Add按鈕完成添加。此時,我們看到導出的頭文件在
Project下,這樣不能暴露給別人使用,將其拖動到Public下:
然後分別選擇模擬器和iOS Device模式下編譯,它會生成libZW.framework
可能有的人生在的是Debug模式下的,那你就應該把第四步中的build Configure改成release模式,再生成一次就行了,
這時模擬器的framework和iOS Device的framework是分開的,
怎樣知道framework是支持模擬器的還是支持真機的呢可以用命令,先cd到libZW.framework裏面,你會看到裏面的libZW,然後執行lipo -info libZW
如果是i386表示支持真機
如果是armv7支持模擬器
那怎樣將其合呢
執行命令命令lipo -create xxxx/libZW xxxxx/libZW -output libZW
你會看到在Debug-iphoneOS同級目錄下會有一個新的libZW,這個表示繼支持模擬器又支持真機的,如果不信可以執行命令
lipo -info libZW你會看到裏面既有armv7又有i386,然後將其替換Release-iphoneos裏面的libZW.framework目錄下的libZW,
此時的libZW.framework可以同時在真機和模 擬器中同時使用,好了就說這麼多了