iOS-SDK從無到有(學(xué)有所出,有所記)

前言

  • 背景

記得上一次自己做過一個(gè)SDK,目的是讓其他APP能自動(dòng)跳轉(zhuǎn)到公司APP中做些事,一番資料查閱,任務(wù)也很快完成。當(dāng)時(shí)自己也感覺做SDK也就那么回事,爛熟于心。過了一年多,公司業(yè)務(wù)發(fā)展,投訴平臺(tái)上線后,新需求又來了。需要前端把整個(gè)網(wǎng)絡(luò)服務(wù)層(socket.io)做成SDK,可以提供給其他公司調(diào)用,也有方便公司新項(xiàng)目能快速集成的考慮。當(dāng)然,這些都是些題外話,問題的關(guān)鍵是我又忘記了,雖然說步驟并不復(fù)雜。經(jīng)過資料查閱加上自己的驗(yàn)證,于是乎,就有了這篇文章。

  • 學(xué)有所出:

    個(gè)人覺得,學(xué)習(xí),不管是哪一門學(xué)科,那個(gè)行業(yè),最好的學(xué)習(xí)方法就是學(xué)有所出。帶著目的去學(xué)習(xí),要求自己學(xué)了某個(gè)東西一定最后能有個(gè)產(chǎn)出??梢允且黄獙W(xué)習(xí)心得,發(fā)表一篇科技論文;也可以是將自己所學(xué)的新東西與以往的東西融匯貫通,比方說,學(xué)習(xí)了某個(gè)新技術(shù),然后集成到自己的工程中;當(dāng)然,產(chǎn)出也可以是具體的某個(gè)實(shí)物,一個(gè)APP或是一個(gè)創(chuàng)新發(fā)明。學(xué)有說出,帶著這個(gè)信念和目的,不僅我們的學(xué)習(xí)過程不會(huì)那么枯燥乏味,而且能夠體會(huì)到最后產(chǎn)出給我?guī)淼南矏偂?/li>
  • 學(xué)有所記

    俗話說,好記性不如爛筆頭,說的就是做筆記的重要性!看懂別人的,那還是別人的,學(xué)了新東西,當(dāng)時(shí)會(huì)了,也做到了有所出。但是,如果這些新東西,我們不是像寫NSLog一樣經(jīng)常用,難免會(huì)忘記。特別是很多有關(guān)工程配置的東西,繁瑣難記。按照自己的思路整理一篇博客,方便他人的同時(shí)也利于自己下次使用。

正題

這篇文章的目的是:如何快速制作自己的SDK。所以很多關(guān)于SDK的介紹內(nèi)容就不再累述,這里只寫一些自己覺得重要的東西和詳細(xì)步驟。

A、關(guān)于靜態(tài)庫和動(dòng)態(tài)庫

  • 靜態(tài)庫:.a和.framework ,動(dòng)態(tài)庫:.dylib和.framework。.framework可靜可動(dòng),取決于你的配置,詳見后面過程。
  • 我們做SDK的目的其實(shí)主要那么幾個(gè),解耦,給別人用又不想別人看見我們的源碼。
  • 我們做SDK都是做靜態(tài)庫也就上面的.a和.framework

B、如何制作.a靜態(tài)庫

  • 1.新建工程,選擇Static Library


    6FAB3AF7-A850-4704-B5D8-EECE9C2CA11B.png
  • 2.Build Active Architecture Only 設(shè)置為NO(不同機(jī)型的架構(gòu)不一樣,設(shè)置為NO適配不同機(jī)型)


    392B203B-6EDB-4EB8-8380-B49013CE95AE.png
  • 3.添加需要打包的代碼


    35697350-1563-461C-A878-9D5D466D7D90.png
  • 4 設(shè)置最低支持版本和暴露頭文件(別人能看到的.h文件)


    5629B684-21F3-473C-9EA8-6577FD427A9C.png

    4A450010-61B5-44DA-976F-38B8F3C646DE.png
  • 5.運(yùn)行代碼生成對(duì)應(yīng)庫(模擬器和真機(jī)下分別在debug和release環(huán)境下運(yùn)行代碼,總共是4次,右鍵點(diǎn)擊上圖中的紅框內(nèi)庫文件,Show in Finder會(huì)發(fā)現(xiàn)4個(gè)人文件,對(duì)應(yīng)剛才4次運(yùn)行結(jié)果)


    84BDFB39-3286-4CDC-9D47-9E4A853A4531.png
  • 6.合并庫文件(注意空格)
    • 生成debug庫文件
      終端:lipo -creat debug下模擬器庫文件路徑 debug模式下真機(jī)庫文件路徑 -output 合并后庫文件路徑
    • 生成release庫文件
      終端:lipo -creat release下模擬器庫文件路徑 release模式下真機(jī)庫文件路徑 -output 合并后庫文件路徑
    說明:最終生成了兩個(gè)合并好的庫文件,debug和release。使用時(shí)根據(jù)當(dāng)前工程配置情況選用對(duì)應(yīng)庫文件。
  • 7 驗(yàn)證。將做好的庫文件添加到自己的工程中,看是否能正常使用。注意,.a靜態(tài)庫文件沒有頭文件,需要自己手動(dòng)添加,找到剛才生成的四個(gè)文件,任選一個(gè),拷貝include文件夾,同合并好的庫文件一起添加到工程中才能正常使用。


    FB2EC2CC-B93C-4C5D-B279-7F21B331A41D.png

    A7AF486B-8046-49EA-9467-66C727CBE4B5.png

c、如何制作.framework靜態(tài)庫

  • 1.新建framework工程


    56BA7CB5-AB1F-41C2-A2DE-BD368EA1DF9C.png

    84F7955D-A517-44A3-9C9C-826EE97F6E16.png
  • 2.Build Active Architecture Only 設(shè)置為NO(不同機(jī)型的架構(gòu)不一樣,設(shè)置為NO適配不同機(jī)型)


    79333EB0-3DF1-4B21-B8DF-02A204C3251F.png
  • 3.暴露頭文件
    注意:framework工程新建就有一個(gè).h文件,其實(shí)就是一個(gè)主頭文件。我們?cè)谥黝^文件中導(dǎo)入需要導(dǎo)入的頭文件,后面我們?cè)谑褂眠@個(gè)靜態(tài)庫的時(shí)候只需要導(dǎo)入這個(gè)主頭文件即可。就像我們使用很多第三方開源框架一樣。
248F8E50-FA4A-46C0-8F19-FB562B109866.png
  • 4.設(shè)置為靜態(tài)庫(默認(rèn)是動(dòng)態(tài)庫)


    23F796BC-63EC-4CBC-9602-423211C5017D.png
  • 5.合并庫文件,做法和.a靜態(tài)庫一樣。
    注意:

    • 合并的是下圖所示文件
    • output文件后綴為.lipo
    • 生成的.lipo文件去掉后綴名,改為與合并前文件一樣的名稱,拖入開始運(yùn)行生成的人一個(gè)文件中,替換原來的。
476DEDB8-1325-4725-809B-B8AD4E11A113.png
  • 6.驗(yàn)證(上述替換好的.framework文件添加的工程中)


    E53B0F7A-3067-4DAE-A637-8B064E3E5988.png
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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