ios 製作自已的framework

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可以同時在真機和模 擬器中同時使用,好了就說這麼多了

發佈了59 篇原創文章 · 獲贊 81 · 訪問量 103萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章