本文主要介紹以下幾個方面的內(nèi)容:
一、利用pod命令行,創(chuàng)建一個開發(fā)sdk的工程,該工程既可以開發(fā)sdk代碼,也可以同時編寫測試代碼,與sdk代碼聯(lián)調(diào)
二、將開發(fā)的sdk代碼打包成靜態(tài)庫
三、正式使用打包好的.framework靜態(tài)庫
第一部分:開發(fā)并調(diào)試sdk代碼
1、確定已安裝cocoapods,打開命令行窗口,cd到你要創(chuàng)建工程的目錄下,然后執(zhí)行命令?pod lib create xxx(xxx是你的工程名字),過程中會有一個問題頁面,可參考如下的填寫:

命令執(zhí)行完后,當(dāng)前目錄會出現(xiàn)如下的目錄結(jié)構(gòu):

2、請打開Example目錄下的.xcworkspace工程,重點關(guān)注紅線標(biāo)注的部分目錄結(jié)構(gòu),這個是sdk開發(fā)和測試中會涉及到的文件和目錄

4、上圖中第3步中的文件夾,對應(yīng)的物理目錄是Classes目錄,該目錄下是開發(fā)sdk的代碼。

我們在該目錄下新增了兩個文件,TestApiObject.h 和TestApiObject.m兩個文件,其中TestApiObject.h是將來想暴漏給用戶的頭文件,這兩個文件中任意新增一個接口測試用,如下:
-(void)testMethod{
? ? NSLog(@"testMethod enter");
}
以上,我們sdk需要開發(fā)的代碼已經(jīng)完成,打包成framework后,我們可以通過TestApiObject類來訪問testMethod這個接口。
5、接下來編輯huotiDetectionSdk.podspec這個文件,這個文件是關(guān)于sdk開發(fā)和打包的一些配置信息,具體每項的意義請參考下圖:

在本文中的簡單例子中,重點關(guān)注s.version/s.homepage/s.source/s.source_files/s.public_header_files, 并不是說其他字段不重要,而是隨著項目的復(fù)雜程度的加深,慢慢再體會其它字段的用處更容易理解。接下來講解這幾個字段的值和作用(上圖來自互聯(lián)網(wǎng),所以與本項目的名字對不上,但不影響理解)
? ? ? s.version:只需要注意一點,與后面的git tag version號一樣就行了,后面打包的時候會再講解
? ? ? s.homepage/s.source: 用于打包代碼存放的路徑,雖然這里可以是git路徑,也可以是本地path路徑,但是建議用git路徑,這樣便于代碼管理和協(xié)作,因此再填寫該路徑之前,1)需要在git上創(chuàng)建一個版本庫(github或者自己公司的git服務(wù)器),2)將本地的該sdk工程添加git管理(git init,git remote add origin xxx, git push origin master等,具體請搜索git相關(guān)知識),3)將該git遠程庫上的那個用于clone的地址拷貝出來,就可以作為s.homepage/s.source的值了。4)那么當(dāng)打包靜態(tài)庫的時候,會自動從這個git地址上拉去代碼,進行打包。
s.source_file: 該字段表示sdk的代碼存放的相對路徑,如這里配置的是Classes目錄下,那么我們的sdk代碼必須放在Classes目錄下。
s.public_header_files: 是打包的靜態(tài)庫要暴漏出來的.h文件,需要根據(jù)自己的實際路徑進行配置。
7、sdk代碼寫好了,打包配置也弄好了,接下來需要測試一下sdk代碼有沒有問題,也就是需要聯(lián)調(diào)下了。這個時候就要用到Example for huotiDetectionSdk這個目錄了,這個目錄下面的代碼是我們的測試代碼。在某個ViewController中增加對sdk接口的調(diào)用,

這個時候會提示‘TestApiObject.h’這個頭文件找不到,是因為我們少了一步,命令行下cd到Example目錄下,執(zhí)行pod install, 其中Podfile不需要做任何修改,與剛創(chuàng)建工程時自動生成的保持一致即可。執(zhí)行完pod install之后,會發(fā)現(xiàn) TestApiObject.h這個頭文件可以正常引用了。
8、那么接下來,就是把測試工程跑起來了,跑起來大家都會,這里簡單介紹下該workspace下的工程,1)如果是運行測試工程的話,需選中如下的target:

測試代碼中需要做得相關(guān)配置,在上圖的target下設(shè)置;那么如果是sdk代碼里邊需要做的一些相關(guān)配置呢?
2)sdk代碼里需要做的相關(guān)配置,請選擇如下的target:

9、測試代碼跑起來之后,就可以單不調(diào)試等等,如果sdk代碼已經(jīng)調(diào)試無誤,那么就進入到本文的第二部分,如何打包靜態(tài)庫吧。
第二部分:將開發(fā)的sdk代碼打包成靜態(tài)庫
1、打包利用cocoapods-package 插件,所以需要先安裝,命令行執(zhí)行sudo gem install cocoapods-package,如果安裝出錯,請參考https://gems.ruby-china.com。
2、打包前先做一下驗證,cd到工程所在的目錄下,執(zhí)行命令pod lib lint huotiDetectionSdk.podspec --verbose --use-libraries --allow-warnings,其中每個參數(shù)的意義不詳細說了,因為別人說的更好,文章最后會給兩個鏈接。
3、打包前先提交代碼:
git add .
git commit -m '0.1.0'?
git tag 0.1.0 (這里的tag號0.1.0必須與huotiDetectionSdk.podspec里邊配置的s.version一致)
git push origin 0.1.0, 將本地的tag推送到遠程庫中
pod package huotiDetectionSdk.podspec --force --no-mangle(打包.framework的命令)
4、打包完成后在項目的Example同級目錄下可以看到 huotiDetectionSdk-0.1.0的文件夾,這個里邊即使打包好的Framework了,下圖中只是作為目錄展示,不包含打包好的sdk。

第三部分:正式使用打包好的Framework靜態(tài)庫
新建Xcode的single view App工程,將打包好的Framework拖到工程中,任意Viewcontroller中引用即可。
注:本文只是一個完整流程的簡單入門,實際開發(fā)中情況比較復(fù)雜,但只要知道了整體的開發(fā)流程,那么其他的復(fù)雜問題,也可以通過各種調(diào)試解決的。
附上學(xué)習(xí)過程中參考的幾篇文章:
http://www.itdecent.cn/p/c32534076250
https://cloud.tencent.com/developer/article/1147879