天天看點

pod私有庫之間互相依賴

場景

最近在做一個開源項目,具體是把一個項目的代碼的各個部分解藕,取出來獨立封裝為各個子產品,再把這些子產品通過CocoaPods內建為若幹私有庫,最終在工程中通過pod install指令即可完成內建,各個子產品也可以獨立進行維護。現在的問題是,如果多個庫之間需要存在依賴關系,如何實作?

遇到的困難

假設讀者朋友已經熟悉podspec檔案的編寫規範。在一個庫中申明它需要用到某個庫,但是在pod lib lint指令執行的過程中,它找不到那個被依賴的庫,這時就build失敗了,在編譯結果中也可以得到這個提示。但是我們也不能把需要用到的庫中的代碼拉進這個子產品。那假設這兩個子產品都在工程中用到,那個被依賴的子產品就會出現兩次了,這是不允許的。

解決辦法

1.pod lib lint技巧。

在podspec檔案中申明它要用到哪個pod,然後在pod lib lint 的指令後加上需要依賴的庫的名稱,這樣在編譯的時候就會自動把目标檔案連接配接起來,通過編譯。在這種情況下,是不需要實際引如被依賴的檔案的,但可以編譯通過。指令如下:

pod lib lint --use-libraries --allow-warnings --sources=BIEncrypt
           

sources後跟的是依賴的庫的名稱,這裡隻是舉了一個例子。另外–use-libraries指令表明程式中涉及到了.a檔案,–allow-warnings指令表明允許警告,–sources後可以加上一個或多個庫的名稱,前提是這些庫被用到而且這些庫已經上傳并交由pods管理。

2.podspec中依賴語句。

另外别忘了在podspec檔案中加上如下一句話:

s.dependency 'BIEncrypt','~> 0.2.0'
           

它表明依賴某個庫,庫的版本是多少。

3.pod repo push方法。

這個過程是指把podspec檔案上傳,交由pods管理的語句,它同樣需要加一些字尾,因為它上傳的這個過程也要編譯。指令如下:

pod repo push BIFaceSDK BIFaceSDK.podspec --use-libraries --allow-warnings --sources=BIEncrypt
           

繼續閱讀