在cocoapods1.4 之前 對于pods庫集成swift庫 都是需要我們設(shè)置 !use_framework
贡蓖,這樣設(shè)置之后所有的pods庫都必須使用動態(tài)庫顽冶,但這就帶來一個問題,如果我需要集成一個靜態(tài)庫怎么辦流酬?
水平有限,我們之前只有兩種方案:
- 靜態(tài)庫放入主工程中,然后用protocol 包住靜態(tài)庫的方法再發(fā)布一個不包含該靜態(tài)庫的協(xié)議庫峡眶,這樣各個組件可以調(diào)用
- 包裝靜態(tài)庫為動態(tài)庫。
- pods 1.4 有了實(shí)驗(yàn)性質(zhì)的打包靜態(tài)庫植锉,但是坑非常多
經(jīng)過調(diào)研采坑 我們采用了第二種方案辫樱。初期不覺得有什么問題,但是之后庫越來越多俊庇,包裝這件事情本身就是費(fèi)時費(fèi)力狮暑,中間也踩了很多坑,這個是一開始的調(diào)研辉饱。在開開心心的用了swift之后 我們打包遇到了困難搬男,打包報(bào)錯動態(tài)庫依賴過多 大概只能有75左右的動態(tài)庫 超過了這個數(shù)就要GG...
正好這時候cocoapods 1.5發(fā)布 文章發(fā)布時為1.5.3 大問題基本已經(jīng)解決。遂采取社區(qū)的pods方案彭沼。
其實(shí)很簡單
1 升級pods
gem install cocoapods
2 自己組件庫的podsepc 添加s.static_framework = true
這里有個問題說下止后,顯然 很多第三方你發(fā)不了podspec,所以需要對主工程的podfile 做些改造。
pre_install do |installer|
Pod::PodTarget.send(:define_method, :static_framework?) { return true }
end
添加這個代碼 我們可以把所有的pods庫都設(shè)為靜態(tài)庫译株。
3 podfile 里添加 use_modular_headers!
或者你可以增對單獨(dú)的庫使用 :modular_headers => true