ios framework通用庫的製作

來源:互聯網
上載者:User

這篇文章是在史上最完整的iOS DIY framework 詳細教程(一)的基礎上加以修改

1、建立一個靜態庫工程:


2:取自己喜歡的名字:


3、刪除嚮導所產生工程中的 Target:


3、刪除TestFrameWork對應的工程檔案夾:


5:刪除bulid 關連項

選擇左下角Manager Scheme


選中 Scheme,點擊左下角的減號刪除:


刪除完成後,點擊 OK 返回。

5、增加一個新目標。點擊 “Add Target”
<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20140303/20140303094208126.png" alt="\">

在彈出的對話方塊中選擇 Mac OS X 下的 Bundle:

其實這個Bundle選擇Ios中的也行,我這2種都試過,都是可以的,如果我說的不對請指出。



如,給庫取一個名字,保持預設的 Framework(CoreFoundation),然後點擊 Finish。

6、修改新目標的工程設定。選中 TARGETS 中對應的目標, Build Settings 頁:



7.target 上右鍵get Info 在Build Settings下面設定下面的幾項內容

a.Base SDK選擇Latest IOS(IOS 5.1)

b.Build Active Architecture Only選擇NO

c.Dead Code Stripping設定為NO

d.Mach-O Type 為Relocatable Object File (這個設定指定編譯器作一個可以重定位的檔案捆綁,通過這樣做,可以把函數設定封裝在架構內)

e.Link With Standard Libraries為NO

f.Wrapper Extension修改為:預設的bundle改成framework(這裡將bundle修改為framework,在xcode,架構只是一個擴充的檔案夾。架構裡麵包含了一個或多個編譯的二進位源、資源和一些檔案夾。檔案夾通常背稱為"Headers",包含了所有的公用標頭檔)

g.在Architectures選項選擇Standard(armv6 armv7[armv7s]) (不這樣編譯會報錯)

h.工程Info中將Bundle OS Type code的值BNDL改為:FMWK

在 Deployment 下,將 “Mac OS X Deployment Target”改為”Compiler Default”,

將 “Targeted Device Family”改為需要的,此處改成了”iPhone/iPad”,

同時可以根據需要修改 “iOS Deployment Target”,此處改為了 “iOS 3.0”:

8、修改先行編譯頭:就是注釋掉全部


10、向工程中添加一個類




10、在myTestClass。h添加一個方法testFounction:


11、在myTestClass。m中實現方法testFounction:


12.開啟Build Phases選項卡,右下角點擊Add Build Phase–Add copy Headers,然後介面就會多出來一個Copy Headers的菜單,然後添加源檔案。完成後:(Compile Sources 添加.m檔案)

點擊右下角的 “Add copy Headers”:


添加完成後,展開 “Copy Headers”:點擊加號:


選中需要暴露的標頭檔,此處我們選擇 “myTestClassA.h”:


點擊 Add 按鈕完成添加:此時,我們看到匯出的檔案在 Project 下,這樣是不能暴露給別人使用的,將其移動到 Public 下:


12.然後Build & Run ,


裡成功很近了 ,哈哈!

13.下面隨便把我們在上面產生的framework 匯入到其他的工程就可以使用了,哈哈!


找到剛才我們FrameWork 的工程目錄的Bulid->Products->Debug-iphonesimuator->TestFrameWork.farmework


14.下在你想用的地方匯入標頭檔

#import

用法如下:

[html] view plaincopy
  1. myTestClass* vc1=[[myTestClass alloc]init];
  2. [vc1 testFounction];
  3. [vc1 release]; 15.Bulid&Run



    16 補充說明


    在Build的時候,你會發現有 Run Test Profile3個選項,一般情況下我們用的是Build for run,所以你只需要配置下Run這個選項就可以了。

    這個Build Configuration 選擇Dubug 和Release 都可以Build成功,個人理解為:這個包是在用在Debug模式下還是Release模式下,最常見的就是在Debug模式下我們列印些日誌,而在Release模式下我們需要把列印日誌的功能隱藏。

    但是有些小問題注意下:

    如果匯出庫Build Configuration 為Release,那麼需要把引用這個匯出庫的項目的Build Configuration 為Release。

    如果匯出庫Build Configuration 為Debug,那麼需要把引用這個匯出庫的項目的Build Configuration 為Debug。

    也就是說你自己項目盡量和這個庫的Build Configuration 一致。(如果說的不對,請指出錯誤)

    17 製作通用的framework

    1、選擇模擬器Build下

    2、選擇IOS Device Build下,這樣你就會得到2個framework

    3、和製作通用靜態庫xx.a檔案一樣,用命令 lipo -create file1 file2 -output file3


    特別注意,我們製作xx.a通用庫的時候,是用lipo -create ../xx.a ../xxx.a -output xxxx.a

    但是製作framework的時候用得是AA.framework裡的AA,比如MyFrameWork.framework裡的MyFrameWork檔案,而不是MyFrameWork.framework這個檔案

    比如 lipo -create ../Release-iphoneos/MyFrameWork.framework/MyFrameWork ../Release-iphonesimulator/MyFrameWork.framework/MyFrameWork

    -output ../NewFrameWork

    這個你就會得到一個NewFrameWork檔案,然後把這個NewFrameWork檔案重新命名MyFrameWork,用這個檔案把

    Release-iphoneos(iphonesimulator)/MyFrameWork.framework裡的MyFrameWork替換掉,再然後你就可以使用這個庫了。

    (其實你可以匯出的時候,匯出為MyFrameWork,然後用這個匯出的檔案替換,這裡只是舉個例子,.framework製作比.a多了個替換的步驟)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.