打包SDK和Framework

庫:分為動(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


Snip20180424_13.png

1.2 工程里會(huì)出現(xiàn)TestSDK.h和TestSDK.m(這里.m讓我刪除了因?yàn)闆]用)

1.3 TPStartView這是隨便導(dǎo)入測(cè)試用的代碼

image

1.4 導(dǎo)入頭文件

在TestSDK.h中導(dǎo)入你要對(duì)外用的頭文件,比如我導(dǎo)入的是 TPStartView.h

1.5 設(shè)置 target->buildSetting->Build Active Architeture Only 改成NO


Snip20180424_5.png

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

1.6 公開通文件


1.png

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
1.png

打開終端

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

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

1.png
  • 最后得到的合并的.a文件可以把真機(jī)里的.a替換了然后使用即可

.a一般分為realse和debug,更改在product->edit scheme-run->debug/realse

2.如何打包成.framerwork?

  • 選擇Cocoa Touch Framework
    創(chuàng)建完工程是這樣,工程里還有一個(gè)framworkeLib.h的,讓我刪了覺得沒用
1.png
  • 修改成靜態(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è)名字

路徑是下放紅框文件的路徑


1.png
  • 把打包好的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)?

1.png
cd .a路徑
lipo -info libTestSDK.a
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,203評(píng)論 3 119
  • (原文:How to Create a Framework for iOS 作者:Sam Davies 譯者:Mr...
    王憲嶺閱讀 5,070評(píng)論 3 23
  • 概述:JavaFX的應(yīng)用程序的頂級(jí)容器是stage(舞臺(tái)),創(chuàng)建javafx的應(yīng)用程序首先應(yīng)該是集成Applica...
    thychan閱讀 1,763評(píng)論 0 2
  • 年齡大就總是掉頭發(fā),一摸一大把那種,讓我苦不堪言。有一天聽隔壁老王說,把辣椒切絲泡在酒里十天后,往頭皮上抹,就能...
    亭亭婷婷婷閱讀 226評(píng)論 0 1
  • 今天終于把掛拉出來了,或許是我想多了,三天才拉出來本來是1+1=2簡(jiǎn)單的問題讓我在礙于面子的情況下弄的雙方都不愉快...
    白天有多白閱讀 211評(píng)論 0 0

友情鏈接更多精彩內(nèi)容