1. 程式人生 > >元件化開發之04 如何將一些靜態庫打包成動態庫

元件化開發之04 如何將一些靜態庫打包成動態庫

筆者打造出來了5個基礎元件,滿懷信心準備大幹一場時候,發現業務元件用到支付寶 , 微信支付 SDK ,微博 SDK ,高德地圖 SDK 等靜態庫. a ,.framework 檔案時候,連結到元件時候報錯誤,而且還不容易解決,因為我整個工程都是 use_frameworks! ,將來 cocoapods 會把每個 pod 編譯成一個個的 framework 動態庫,這樣靜態庫就沒法使用了,這段時期支付寶不能不用,無法從主工程中抽離出來,我不得不去 github 搜尋支付寶動態庫,還好有個 DLAlipay 的支付寶動態庫可供使用,於是 每個業務元件 s.dependency ‘DLAlipay’ 這樣在元件內部就能使用到支付寶 SDK ,能夠被連結到工程中.

妥協的過程總是讓人難以接受,好在我逐步的把工程裡邊用到靜態庫.framework的地方 都打包成一個個的動態庫 framework, 於是

bugly 動態庫
image.png

AMMapLib 高德地圖 AMFoundation AMSerchAPI AMMapKit AMLocation 4個 framework 合併成一個動態庫 framework

image.png

DReactiveCocoa RAC 動態庫二進位制化

image.png

JPushManager 極光推送動態庫
image.png

QNManager 七牛雲動態庫

image.png

RCIMLib 融雲動態庫
image.png

UMApp 友盟統計 SDK 動態庫

image.png

還有支付寶 微博 微信 SDK 我才有輕量化 不使用任何 SDK 基於openshare 並用oc的 runtime Method Swizzling去抓取從當前 app 跳轉到支付寶 APP 過程中 openURL 傳遞引數,去模擬實現兩個 APP 直接引數傳遞,並處理支付寶支付回撥結構

image.png

image.png

至此第三方登入和第三方支付不適應任何 SDK 去完成 更加輕量化,也減少了包體積 .

經過對第三方框架的動態庫改造 既提高了編譯速度 又可以在元件中去依賴這些第三方 SDK 元件,這樣一個個業務元件應運而生.

這是一個拼車元件的 podspec 檔案資訊 只對基礎元件和一些第三方庫進行依賴 不對其他業務元件進行依賴

image.png

好了,我是大兵布萊恩特,歡迎加入博主技術交流群,iOS 開發交流群

QQ20180712-0.png