`
anlulu
  • 浏览: 41840 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用xcode创建自己的framework

    博客分类:
  • ios
阅读更多

有練習過用 Xcode 建立 Static Library

 

可是使用此方式要分享 Library 時,還是需要把相關的 header 檔一起夾帶到要用的專案上,其實不是很便利,國外有神人製作了一個 OS-Universal-Framework,安裝完畢後,會在 Xcode 中看到兩個新增的 Framework 樣板,可以使用這兩個樣板來製作自己的 Framework,要使用的話,只要把做好的 Framework 拉到專案下就可以使用了,不用夾帶一堆 header 檔案。

 

關於 Framework 的詳細資料可以參考對岸網友的 blog (http://gaobusi.iteye.com/blog/1684415),

裡面說明了為何 Xcode 沒有提供 Framework 的原因,以及如何使用 OS-Universal-Framework,

還滿詳細的,有興趣的話,可以先到此 blog 看一下

 

本文主要是記錄如何使用 OS-Universal-Framework 裡的 Fake Framework 來製作 Framework 的步驟

 

步驟大綱

  1. 下載 OS-Universal-Framework
  2. 結束 Xcode
  3. 安裝 Fake Framework、Real Framework
  4. 新增 Fake Framework 專案
  5. 新增 Single View Application 的專案來使用建立好的 Framework 進行測試

 

1. 下載 OS-Universal-Framework

到 https://github.com/kstenerud/iOS-Universal-Framework 下載 OS-Universal-Framework,

將下載的 zip 解壓縮後,會看到有 Fake Framework、Real Framework 兩個目錄

Image(16)

 

2. 結束 Xcode

安裝完成後,要重啟 Xcode 才會生效,所以直接先把 Xcode 結束掉吧。

 

3. 安裝 Fake Framework、Real Framework

 

安裝 Fake Framework

 

先進入到 Fake Framework 目錄中,會看到 install.sh 這個檔案,執行此檔案來安裝 Fake Framework

     → 開啟「終端機」,進入到 Fake Framework 的目錄下

     → 輸入 sh install.sh 進行安裝動作,

安裝完成結果如下圖:

Fake Framework — bash — 80×36

 

安裝 Real Framework

 

安裝方式跟 Fake Framework 相同,在「終端機」裡切換到 Real Framework 目錄中,輸入 sh install.sh 進行安裝就可以了。

跟 Fake Framework 不同的是,安裝時會問詢問你 Xcode 的安裝路徑、系統管理員密碼,請依照自身的環境進行輸入吧

安裝完成結果如下圖:

Real Framework — bash — 80×64

 

安裝完 Fake Framework、Real Framework 之後,在 Xcode 選擇建立新專案,

就會在的 iOS 裡 Framework & Library 裡看到兩個新增的樣板

Fake Static iOS Framework、Static iOS Framework

沒有的話,請結束你的 Xcode (Quit Xcode),再重新啟動。

Image(17)

 

4. 新增 Fake Framework 專案

 

新增專案

 

在 Xcode 新增一個專案,專案類型選擇 Framework & LIbrary → Fake Static iOS Framework 這個樣板來建立自己的 Framework

專案名稱為 MyFramework01

完成後的結果如下圖:

Image(18)

 

加入測試用的 Function

 

為了測試用,在這專案中新增一個名稱為 MyFunction 的 class 檔案,

裡面新增一個簡單的 sayHello Function

程式碼如下:

MyFunction.h

01 //
02 //  MyFunction.h
03 //  MyFramework01
04 //
05 //  Created by alanjiang on 13/2/28.
06 //  Copyright (c) 2013年 lab. All rights reserved.
07 //
08  
09  
10 #import <UIKit/UIKit.h>
11  
12  
13 @interface MyFunction : NSObject
14  
15  
16 -(NSString *) sayHello;
17  
18  
19 @end

 

MyFunction.m

01 //  MyFunction.m
02  
03 //  MyFramework01
04  
05 //
06  
07 //  Created by alanjiang on 13/2/28.
08  
09 //  Copyright (c) 2013年 lab. All rights reserved.
10  
11 //
12  
13 #import "MyFunction.h"
14  
15 @implementation MyFunction
16  
17 -(NSString *) sayHello
18  
19 {
20  
21     return @"這是我自己的 Framework!";
22  
23 }
24  
25 @end

將 header (.h) 檔案設定為 public

TARGETS → Build Phases → Copy Headers

將 Copy Headers 展開後會看見剛剛新增的 MyFunction.h 在 Project 的區塊裡,

把這檔案拖拉到上面的 Public 裡。

Xcode

 

設定 Scheme

 

設定 Scheme 裡的 Run 設定,把 Build Configuration 更改為 Release

注意:沒做此動作的話,在編譯時會出現下面的錯誤訊息

Shell Script Invocation Error
Command /bin/sh failed with exit code 65

The tail of the build logs show this:

=== BUILD NATIVE TARGET Uber OF PROJECT Uber WITH CONFIGURATION Debug ===
Check dependencies
No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).

** BUILD FAILED **

The following build commands failed:
Check dependencies
(1 failure)

Command /bin/sh failed with exit code 65

 

Xcode(1)

Xcode(2)

 

編譯,取得 Framework

 

上述步驟完成後,進行編譯

編譯成功後,點開專案下的 Products 目錄,會看到 MyFramework01.framework ,點選此檔案,按下滑鼠右鍵,選擇 Show in Finder

Xcode(3)

 

從 Finder 會看到如下圖的兩個目錄

Image(19)

 

以下取自網友的說明

來源:http://gaobusi.iteye.com/blog/1684415

在build目录下有两个文件夹:(yourframework).framework and (your framework).embeddedframework.

如果你的框架只有代码,没有资源(比如图片、脚本、xib、coredata的momd文件等),你可以把(yourframework).framework 分发给你的用户就行了。如果还包含有资源,你必需分发(your framework).embeddedframework给你的用户。

为什么需要embedded framework?因为Xcode不会查找静态框架中的资源,如果你分发(your framework).framework, 则框架中的所有资源都不会显示,也不可用。

一个embedded framework只是一个framework之外的附加的包,包括了这个框架的所有资源的符号链接。这样做的目的是让Xcode能够找到这些资源。

這次新增的 framework 只有程式碼,所以只要需要 MyFramework01.framework 目錄即可

 

5. 新增 Single View Application 的專案來使用建立好的 Framework 進行測試

 

新增測試 Framework 的專案

新增一個名稱為 UseMyFramework01 的 Single View Application 的專案

 

新增 Framework

把剛剛在步驟 4 編譯產生的 MyFramework01.framework,整個拉到 UseMyFramework01 的專案裡

Finder

 

成功之後,會看到專案下就有我們剛剛建立的 Framework 了

Xcode(4)

 

驗證 Framework 的 Function

 

將我們的 Framework 加到專案後,就開始來測試是否可用

在 ViewController.m 裡加入下列程式

Xcode(5)

 

執行後,成功的接收到從 MyFramework 裡的 sayHello 傳出的字串。

搞定,收工!!

iOS Simulator

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics