Xcode 6製作通用framework庫

2022-05-27 04:33:07 字數 3209 閱讀 7462

1.製作環境

1)osx 10.10.5;

2)xcode 6.1。

3)越獄 iphone5 8.4。

2.製作步驟

1)新建專案並選擇ios下的framework&library中的cocoa touch framework;

2)輸入專案名,選擇目錄,完成建立;

3)進行編碼(這裡新建了乙個wydemotest類,新增了wytest方法);

4)設定需要開放的標頭檔案,有些內部使用的沒必要開放;

5)執行(cmd+r)生成framework;

3.測試工程

1)假設之前建立的是基於iphone5s模擬器的framework,建立的demo測試工程也用iphone5s模擬器,會出現如下圖所示錯誤;

2)為什麼會這樣的?因為我們做的是動態庫,在使用的時候需要額外加乙個步驟,要把framework同時新增到「embedded binaries」中,解決辦法如下圖所示;注意: 在xcode 6之前是沒有這個選項的(我沒發現),所以理論上xcode 5及之前的版本無法使用xcode 6下生成的framework動態庫。

3)執行結果如下圖所示。

4.真機測試

1)幸福總是短暫的,為什麼會這樣?錯誤提示已經很明顯了,因為我們製作動態庫的時候,選的裝置是模擬器,如果選真機的話,那生成的庫也只能在真機上使用,那我們該怎樣製作乙個通用的動態庫呢? 簡單的方法是分別生成模擬器和真機上執行的庫,然後在合併。這個方法在每次生成動態庫的時候,過程都會很繁瑣,下面我們用乙個指令碼來自動完成它。

5.製作通用framework動態庫

1)開啟之前的wydemoframework工程,file->new target新建如下圖所示target;

2)新增script到新建的target;

3)指令碼如下;

1

# sets the target folders and the final framework product.

2 fmk_name=$34

# install dir will be the final output to the framework.

5 # the following line create it in

the root folder of the current project.

6 install_dir=$/products/$.framework78

# working dir will be deleted after the framework creation.

9 wrk_dir=build

10 device_dir=$/release-iphoneos/$.framework

11 simulator_dir=$/release-iphonesimulator/$.framework

1213 # -configuration $

14# clean and building both architectures.

15 xcodebuild -configuration "

release

" -target "

$" -sdk iphoneos clean build

16 xcodebuild -configuration "

release

" -target "

$" -sdk iphonesimulator clean build

1718

# cleaning the oldest.

19if [ -d "$"

]20then

21 rm -rf "$"

22fi

2324 mkdir -p "$"

2526 cp -r "$/"

"$/"27

28 # uses the lipo tool to merge both binary files (i386 + armv6/armv7) into one universal final product.

29 lipo -create "

$/$"

"$/$

" -output "

$/$"

3031 rm -r "$"

3233 open "

$"

4)選中新建的target,run,如果沒有異常的話,會自動彈出生成的framework檔案,這樣生成的動態庫就能同時支援模擬器和真機了。

6.製作通用framework靜態庫

1)這樣生成的動態庫恐怕很難在xcode 5上使用,那我們為什麼非要用動態庫呢,一般情況下不是用靜態庫就好了嗎? so easy!只需要修改乙個引數即可生成靜態庫了。

使用靜態庫的話,就可以把framework從「embedded binaries」中刪除了。把新生成的庫匯入到測試工程,試試在模擬器和真機上執行,一切ok。

如果你用的真機是iphone5 c,那悲劇又要發成了,生成的framework竟然不支援armv7s,不知是xcode 6的bug,還是因為蘋果認為使用armv7s的裝置太少,可以不支援了。xcode 新建工程,預設的architectures竟然不包含armv7s,自己在framework的target的architectures新增armv7s,重新生成就行了。

7.參考文件

1)xcode 6製作動態及靜態framework

xcode6製作IOS a靜態庫小記

建立ios靜態庫 簡單寫個列印的 編碼完成之後,直接run就能成功生成.a檔案了,選擇 xcode window organizer projects your project,開啟工程的derived data目錄,這樣就能找到生成的.a檔案了,如圖 靜態庫就生成了 匯入靜態庫 如果你要匯入靜態庫...

Xcode6中新增pch檔案

1.新建工程 2 建立pch檔案 3 修改pch檔案,import 需要的標頭檔案 4 在setting中進行設定 5 pch標頭檔案的內容能被專案中的其他所有源檔案共享和訪問。pch檔案的作用 1.存放一些全域性的巨集 整個專案中都用得上的巨集 2.用來包含一些全部的標頭檔案 整個專案中都用得上的...

xcode6 使用layout自動布局

剛剛學習了xcode6的自動布局,發現網上的教程有很多,寫的也很詳細,但還是感覺很複雜,自己實現不了這個效果.但是最終還是嘗試出了一些方法,並且能夠實現較為固定的xib布局,可以作為layout的入門級別的吧.其實layout看上去很複雜,但是明白了最基本的原理之後就會變的清晰很多.layout中的...