iOS將多個第三方sdk打包成靜態庫

前段時間做了個sdk打包成動態庫,發現使用非常方便各種好處也特別多,然後在最後將APP打包時出問題了,打包時候動態庫打不進去,想了很多辦法還是沒有解決,又因爲趕時間所以只能重新打成靜態庫了。  

在打成靜態庫的時候遇到的最大的問題就是我這個sdk包括了很多的第三方SDK,裏面有很多靜態庫。所以就是靜態庫中包含靜態庫,在此囉嗦一下,打包時動態庫是可以直接將靜態庫打包進去的,而靜態庫中是沒有辦法包含靜態庫了,就算將第三方靜態庫打包進自己的靜態庫中,然後編譯的時候它是不會將第三方靜態庫一起編譯的(這是我根據使用靜態庫運行時報錯的錯誤信息推斷的或許不準確歡迎同行指正)。 

第一步當然是創建個靜態庫工程了  

 

然後根據需要可以決定是否刪除系統自動創建的文件(文件是以工程名爲名的)。  

第二步在Build Phases中添加Headers標籤,再將你要打包成靜態庫的文件拖動到這個工程中,從Headers中的Project將你需要暴露的頭文件拖動到Public中,如圖: 

 

第三步就是導入第三方的靜態庫和頭文件了,靜態庫編譯的時候只要語法正確能夠找到文件就可以了,所以你要在打靜態庫的時候導入所有涉及的庫和文件:

注意,Add to targets不要勾上,完成後的結果是你雖然導入了靜態庫了,但是這裏什麼都沒有:

如果這個地方有你導入的第三方靜態庫一定要將其刪除.

到了這一步如果沒有問題你編譯就可以成功了,然後靜態庫就出來了。

可能有的第四步,如果你需要打成靜態庫的文件中有拓展(Categort),那麼這個地方other Linker Flags要寫入-ObjC,如圖 

在Deployment中你可以設置你的靜態庫支持的最低版本:

第五步,使用靜態庫。在項目工程中使用靜態庫你不但要將自己的靜態庫導入的工程中,你還要將你的靜態庫所依賴的第三方靜態庫也一起導入你的工程中,記着你的靜態庫所使用的系統的動態鏈接庫也要一併在項目中加上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章