组件化开发之04 如何将一些静态库打包成动态库

笔者打造出来了5个基础组件,满怀信心准备大干一场时候,发现业务组件用到支付宝 , 微信支付 SDK ,微博 SDK ,高德地图 SDK 等静态库. a ,.framework 文件时候,链接到组件时候报错误,而且还不容易解决,因为我整个工程都是 use_frameworks! ,将来 cocoapods 会把每个 pod 编译成一个个的 framework 动态库,这样静态库就没法使用了,这段时期支付宝不能不用,无法从主工程中抽离出来,我不得不去 github 搜索支付宝动态库,还好有个 DLAlipay 的支付宝动态库可供使用,于是 每个业务组件 s.dependency 'DLAlipay' 这样在组件内部就能使用到支付宝 SDK ,能够被链接到工程中.

妥协的过程总是让人难以接受,好在我逐步的把工程里边用到静态库.framework的地方 都打包成一个个的动态库 framework, 于是

bugly 动态库


组件化开发之04 如何将一些静态库打包成动态库_第1张图片
image.png

AMMapLib 高德地图 AMFoundation AMSerchAPI AMMapKit AMLocation 4个 framework 合并成一个动态库 framework

组件化开发之04 如何将一些静态库打包成动态库_第2张图片
image.png

DReactiveCocoa RAC 动态库二进制化

组件化开发之04 如何将一些静态库打包成动态库_第3张图片
image.png

JPushManager 极光推送动态库


image.png

QNManager 七牛云动态库

image.png

RCIMLib 融云动态库


组件化开发之04 如何将一些静态库打包成动态库_第4张图片
image.png

UMApp 友盟统计 SDK 动态库

组件化开发之04 如何将一些静态库打包成动态库_第5张图片
image.png

还有支付宝 微博 微信 SDK 我才有轻量化 不使用任何 SDK 基于openshare 并用oc的 runtime Method Swizzling去抓取从当前 app 跳转到支付宝 APP 过程中 openURL 传递参数,去模拟实现两个 APP 直接参数传递,并处理支付宝支付回调结构

组件化开发之04 如何将一些静态库打包成动态库_第6张图片
image.png
组件化开发之04 如何将一些静态库打包成动态库_第7张图片
image.png

至此第三方登录和第三方支付不适应任何 SDK 去完成 更加轻量化,也减少了包体积 .

经过对第三方框架的动态库改造 既提高了编译速度 又可以在组件中去依赖这些第三方 SDK 组件,这样一个个业务组件应运而生.

这是一个拼车组件的 podspec 文件信息 只对基础组件和一些第三方库进行依赖 不对其他业务组件进行依赖

组件化开发之04 如何将一些静态库打包成动态库_第8张图片
image.png

你可能感兴趣的:(组件化开发之04 如何将一些静态库打包成动态库)