iOS功能模塊封裝SDK(靜態庫)

先說下封裝SDK的使用場景:
比較常見的就是地圖,視頻播放器,數據統計這種功能性的SDK,做好后出售給其他公司使用,不能暴露源碼;
其他情況就是解耦了,比如說當你的公司有很多個App,名字,電話,頭像,身份證等沒必要讓用戶在登錄公司其它App的時候再設置一遍,也就是所有App共用同一個用戶數據庫,我們就可以開發一個私有庫做組件,或者封裝一個SDK
本文的例子就是封裝一個登錄的SDK

一、開發功能

首先把你想封裝的代碼準備好,比如說用戶登錄時需要的授權工具類,用戶模型等等文件整理好放在一個文件夾里

二、創建庫

1、創建靜態庫
(1).framework

創建一個iOS的CocoaTouch工程,點擊Next,輸入我們Framework的名字即可。下方我們暫且將該Framework的名字命名為“Login”。

操作如下:
Xcode 一> File\New\Project 一> iOS\Framework &Library\Cocoa Touch Framework 一> 命名項目工程 一> 保存目錄

由于framework默認是動態庫,要將Mach-O Type設置為靜態庫“Static Library”

操作如下:
Xcode 一> Project 一> Targets 一> Build Settings 一> Mach-O Type 一> Static Library

(2).a

創建靜態庫的話,可以直接選擇Cocoa Touch Static Library,這樣編譯出來的就是.a文件,不用配置靜態庫了

2、設置最低支持的兼容版本:

創建完工程后,我們要選擇“Deployment Target”, 此處我們選擇的是8.0。也就是說此處我們封裝的SDK所支持的iOS系統版本是iOS8.0+。

操作如下:
Xcode 一> Project 一> Targets 一> General 一> Deployment Info 一> ios8.0(最低支持的兼容版本)

3、導入源代碼文件,設置文件權限:

將第一步準備好的SDK源代碼引入到我們的Framework工程中進行編譯,在編譯之前我們要選擇SDK用戶可以看到的文件。是在Build Phases下的Headers中進行設置的。
將用戶可以看到的頭文件放在Public中,用戶看不到的放在Project中。

操作如下:
Xcode 一> Project 一> Targets 一> Build Phases 一> Headers 一> Public/Private/Project

4、編譯工程:

編譯Framework工程前,需要設置Edit Scheme, 將Debug模式改成Release模式。
設置和配置完畢后,我們就要對我們的Framework工程進行編譯了。先選擇模擬器進行編譯,然后連接真機,選擇真機進行編譯。
編譯完后,在項目Products文件夾下會生成相應的Framework, 然后通過Show in Finder進行查看。

5、合并.framework/.a:

因為在模擬器下編譯會生成模擬器下使用的Framework,在真機下編譯會生成真機使用的Framework。如果想我們生成的Framework既可以在真機下使用,也可以在模擬器下使用,那么我們需要將兩個Framework進行合并。
我們需要的是這兩個文件:

來到終端:
輸入 lipo -info 拖入真機上的這個文件路徑 回車

結果:

前面的不用管,看最后 armv7 arm64 說明是真機,如此方法測試模擬器文件,需得到i386 x86_64才對。

確認兩個文件無誤之后,接下來合并:lipo -create 真機路徑 模擬器路徑 -output 真機路徑

因為我們是合并到真機路徑上,所以合并完成后需要按上面的方法進行測試,還是拖入真機路徑,這時候需要得到的是:armv7 i386 x86_64 arm64

此時我們得到了我們需要的SDK了,這個SDK在模擬器上也能使用,在真機上也能使用了:

最終的SDK文件

三、使用

我們把最終的SDK文件拖入我們想要使用的項目中就可以了

導入頭文件方式

如果此時有警告“Missing submodule‘XXXX’”

記得在framework的總頭文件中聲明一下所有公開文件的頭文件

系統的注釋說的也很清楚了
// In this header, you should import all the public headers of your framework using statements like #import <Login/PublicHeader.h>

參考:iOS項目功能模塊封裝SDK使用總結

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 這幾天公司有一個新的需求,就是要將我們開發的某些東西都抽取出來,打個比方我們開發了A項目,可以以后B項目要包含A項...
    黃魚兒啦啦啦閱讀 6,190評論 2 16
  • (原文:How to Create a Framework for iOS 作者:Sam Davies 譯者:Mr...
    王憲嶺閱讀 4,973評論 3 23
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • 第一次聽這首曲子,心里就有莫名的憂傷。 忍不住點一支煙,看煙霧繚繞,聽細細碎碎的音符如同起起落落的心情...
    我就是七彩熊貓閱讀 480評論 0 0
  • 人生在世無朋友,猶如生活無太陽。 正在電腦前與文字作斗爭,門鈴叮叮咚咚響起來,過去一看,原來是好友小春,穿著臃腫的...
    光陰悠然閱讀 316評論 8 7