庫:分為動(dòng)態(tài)庫和靜態(tài)庫(目前蘋果不支持上傳動(dòng)態(tài)庫)
- 靜態(tài)庫:.a和.framework
- 動(dòng)態(tài)庫:.dylib和.framework
系統(tǒng)的.framework是動(dòng)態(tài)的,自己創(chuàng)建的是靜態(tài)的.所以即有動(dòng)態(tài)也有靜態(tài)
.a和.framework區(qū)別
- .a是一個(gè)純二進(jìn)制文件,.framework中除了有二進(jìn)制文件之外還有資源文件。
- .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
- .a + .h + sourceFile = .framework。
建議用.framework.
1.如何打包成SDK?
1.1 選擇Cocoa Touch Static Libary

1.2 工程里會(huì)出現(xiàn)TestSDK.h和TestSDK.m(這里.m讓我刪除了因?yàn)闆]用)
1.3 TPStartView這是隨便導(dǎo)入測(cè)試用的代碼
1.4 導(dǎo)入頭文件
在TestSDK.h中導(dǎo)入你要對(duì)外用的頭文件,比如我導(dǎo)入的是 TPStartView.h
1.5 設(shè)置 target->buildSetting->Build Active Architeture Only 改成NO

這是為了兼容所有模擬器,如果是真機(jī)的話也是為了兼容所有真機(jī)的cpu架構(gòu)不同
1.6 公開通文件

1.7 打包SDK
分為模擬器,真機(jī)和兩者通用的SDK
- 模擬器:運(yùn)行項(xiàng)目選擇模擬器
- 真機(jī):運(yùn)行選擇真機(jī)或者Generic iOS Device
- 通用就是合并兩者路徑然后合并后的.a替換真機(jī)的SDK中的.a
1.8 導(dǎo)入所需要的工程中
導(dǎo)入公開的頭文件和.a即可
通用SDK制作
-
選擇藍(lán)色的然后show in finder
1.png
- 會(huì)得到之前不管是用真機(jī)還是模擬器運(yùn)行得到的SDK

打開終端
lipo -create 模擬器.a路徑 真機(jī).a路徑 -output 合并會(huì).a路徑/自己起個(gè)名字

注意:.a路徑一定是紅框文件的路徑,可以直接拖到終端查看

- 最后得到的合并的.a文件可以把真機(jī)里的.a替換了然后使用即可
.a一般分為realse和debug,更改在product->edit scheme-run->debug/realse
2.如何打包成.framerwork?
- 選擇Cocoa Touch Framework
創(chuàng)建完工程是這樣,工程里還有一個(gè)framworkeLib.h的,讓我刪了覺得沒用

-
修改成靜態(tài)庫,默認(rèn)是動(dòng)態(tài)庫
1.png
-
將你要公開的頭文件移動(dòng)到Public下
1.png
- 打包Framework
也是分真機(jī),模擬器和兩者通用的
真機(jī)和模擬器就是分別選擇真機(jī)和模擬器
兩者通用的:
lipo -create 模擬器.framework路徑 真機(jī).framework路徑 -output 合并會(huì).a路徑/自己起個(gè)名字
路徑是下放紅框文件的路徑

- 把打包好的fram導(dǎo)入到你需要的工程中, 導(dǎo)入頭文件樣式
#import <FrameworkeLib/TPStartView.h>
制作注意:
- 圖片資源的處理:兩種靜態(tài)庫,一般都是把圖片文件單獨(dú)的放在一個(gè).bundle文件中,一般.bundle的名字和.a或.framework的名字相同。
- category是我們實(shí)際開發(fā)項(xiàng)目中經(jīng)常用到的,把category打成靜態(tài)庫是沒有問題的,但是在用這個(gè)靜態(tài)庫的工程中,調(diào)用category中的方法時(shí)會(huì)有找不到該方法的運(yùn)行時(shí)錯(cuò)誤(selector not recognized),==解決辦法是==:在使用靜態(tài)庫的工程中配置other linker flags的值為-ObjC。
- 如果一個(gè)靜態(tài)庫很復(fù)雜,需要暴露的.h比較多的話,就可以在靜態(tài)庫的內(nèi)部創(chuàng)建一個(gè).h文件(一般這個(gè).h文件的名字和靜態(tài)庫的名字相同),然后把所有需要暴露出來的.h文件都集中放在這個(gè).h文件中,而那些原本需要暴露的.h都不需要再暴露了,只需要把.h暴露出來就可以了。
iOS app需要在許多不同的CPU架構(gòu)下運(yùn)行:
arm7: 在最老的支持iOS7的設(shè)備上使用
arm7s: 在iPhone5和5C上使用
arm64: 運(yùn)行于iPhone5S的64位 ARM 處理器 上
i386: 32位模擬器上使用,比如iphone5
x86_64: 64為模擬器上使用
怎么查看打包好的sdk支持什么cpu架構(gòu)?

cd .a路徑
lipo -info libTestSDK.a


