重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
實際開發中離不開靜態庫的使用,記錄一下
成都創新互聯公司是一家集網站建設,什邡企業網站建設,什邡品牌網站建設,網站定制,什邡網站建設報價,網絡營銷,網絡優化,什邡網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
.a是一個純二進制文件,.framework中除了有二進制文件之外還有資源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。
創建
配置如下
加到主工程
配置路徑
導入頭文件 使用
targets-Build Phases-Copy Files-"+"你需要公開的頭文件
所有流程都跟上面的一樣,只是我們運行打包時要選擇真機運行,你可以選擇自己插上去的真機,也可以選擇Generic ios Devices。當然不要忘記了設置支持所有真機機型架構: Build Active Architecture Only 設為NO。
分別使用真機或者Generic iOS Device 和 隨便一個模擬器運行靜態庫 得到模擬器靜態庫和真機靜態庫 然后在Finder 中打開
Show in Finder
通過命令行合并 (注意 庫的名稱要一致)
lipo -create 第一個.a文件的絕對路徑 第二個.a文件的絕對路徑 -output 最終的.a文件路徑
然后在工程中將這個.a 替換就支持真機和模擬器了
workspace里 Argos是主工程 LJNetwork是一個靜態庫工程 AGFramework.framework是打包好并導入到主工程的靜態庫
現在LJNetwork要引用AGFramework.framework庫
只需要在LJNetwork的Build Setting — User Header Search Paths 中 拉入AGFramework.framework中的Headers文件夾的路徑
靜態庫LJNetwork引用 靜態庫LJFoundation的文件
配置如下
靜態庫LJNetwork要引用pods中的AFNetworking 如下設置
個人博客地址:
Q1:什么是庫(Library) ?
Q2:靜態庫和靜態庫的區別?
靜態庫
動態庫
Q3:framework為什么既是靜態庫又是動態庫?
Q4:.a 與 .framework有什么區別?
Q5:swift使用動態庫?
Q6:swift使用靜態庫?
Q7:CocoaPods中靜態庫和動態庫?
Q8:可以在runtime時加載動態庫嗎?
Q9:在使用靜態庫時,某些Pod不支持module怎么辦?
最近公司由于業務需求,需要提供一個SDK以供第三方公司的集成開發,之前沒有這方面的開發經驗有點迷茫。然后就在網上查看了一些相關的資料,自己研究了一天,成功的封裝出了自己iOS開發過程中的第一個SDK包。同時也是為了以后開發SDK留下一個比較完整的筆記。
SDK的英文全名是:software development kit,翻譯成中文的意思就是“軟件開發工具包”,我個人的理解就是一個工具包,完全可以理解成開發中我們的一個公共類。
二、怎么實現SDK的封裝呢?
1.打開Xcode開發工具創建我們的工具類
注:本文中使用的開發工具為xcode9.3
創建完成后
創建完成后,我們新建兩個繼承于基類的文件,一個用于封裝網絡請求一個用于封裝我們需要提供給他人使用的方法以及需要動態改變的參數。
2.網絡請求添加到SDK中一起封裝
因為我們封裝的SDK有的數據涉及到網絡請求,所以我們封裝的時候,順便把需要用到的網絡請求也封裝進去。
1).使用cocoapods導入第三方庫AFNetWorking
具體使用 見印象筆記內容,包含了使用cocoapods遇到的問題以及解決方法: ??
2).在封裝的SDK中如果涉及到使用第三方的庫引用的時候,一定要在.m文件中進行引用
3.做完想要封裝的文件后,開始進行封裝
先進行編輯設置,在product --Scheme---Edit Scheme
此處必須是release,不能用debug模式,選擇SDK是在iOS 、tvOS還是watchOS 4上面運行的SDK,在這兒我們選擇iOS
在build Setting里面 搜索linking 設置Mach-O Type 為 static library
在build Phases --- headers 中添加需要暴露的類,將Project里面想暴露的文件.h拖動到Public里面進行文件暴露
完成所有設置后,我們進行真機編輯和模擬器編輯最后合并成一個可以在真機和模擬器上運行的第三方SDK,
4.到這一步我們的SDK封裝就差最后一步了,合并成能在真機和模擬器上運行的SDK
選中編輯好的包,我這兒是Demo_SDK.framework然后右擊顯示文件內容
找到這兩個文件后,我們開始合并,得到我們想要的SDK
1).打開終端---輸入lipo -create 加上文件路徑
1.為真機的文件,2為模擬器的文件,3為合并后輸出問的地址
注意:我們所合并的文件是Demo_SDK,并不是所有的文件
合并到處文件為lipo結尾的
更改合并和的文件名稱和合并前文件名稱相同,并且去掉后綴。用合并和的文件替換掉和并前的文件
合并完成后拷貝處我們封裝的SDK,在其他項目中引用就可以了
總結:截圖比較多,為了照顧像我這樣的小白,希望大家理解。第一次寫,不喜勿噴,這只是作為自己的個人筆記,如果有什么不對的地方,希望大家指出一起交流學習,Thanks?(?ω?)?
Demo鏈接: