组件化开发之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

猜你喜欢

转载自blog.csdn.net/dzb1060545231/article/details/80666839