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)指令碼如下;
14)選中新建的target,run,如果沒有異常的話,會自動彈出生成的framework檔案,這樣生成的動態庫就能同時支援模擬器和真機了。# 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 "
$"
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中的...