组件化开发之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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,941评论 25 709
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,035评论 3 119
  • 2018年3月16日,注定是一个不平凡的日子,在这一天我跟随校长来灵宝学习,遇到了满怀诗情才艺的涂荣娜老师,又因为...
    三门峡079唐剑红阅读 3,875评论 0 2
  • 有时候,就是莫名的会觉得没意思,没动力,那些梦想好像也变得遥远。但是不管怎样,十点君都会坚持好好洗澡好好吃饭,时间...
    木一争阅读 2,047评论 0 1
  • 给的痛还不够 耳光太沉闷 蓝色的杯子 装满了这些年 你留下的残渣 就算泡着清茶 也荡涤不了这浊臭 这些年的反反复复...
    叫我梅芳就好阅读 1,729评论 0 1