ios 二进制化 运行时

https://www.google.com.hk/search?q=ios+二进制化+运行时&newwindow=1&safe=strict&client=safari&ei=vDCjYLjIB7K2mAX-y7yQCw&start=10&sa=N&ved=2ahUKEwi4loqzodLwAhUyG6YKHf4lD7IQ8NMDegQIARBF&biw=1680&bih=936&dpr=2

 

为什么要做组件二进制化?

  1. 加速 App 构建,编译过一次的代码如果没有变化,没有理由再重复编译
  2. 代码隔离

首先,app 里已经二进制化了,就是代表去依赖了,所以你写什么版本就是什么版本,不会去做依赖计算


因为你们是二进制化的啊,组件是二进制化的,直接进入链接环节了

 

确定了,xxx SDK 二进制化时依赖了正确的SDK,和本地编译是依赖的不是同一个
 
iOS hpex 打包没问题,本地源码打包没有问题
 
https://www.google.com.hk/search?q=二进制化+链接&newwindow=1&safe=strict&client=safari&source=hp&ei=ODGeYJygMZbr-Qaly7HABw&iflsig=AINFCbYAAAAAYJ4_SNuoWv1XLoy_67Mk2SvJJsFHnt0w&oq=二进制化+链接&gs_lcp=Cgdnd3Mtd2l6EAM6AggAOgQIABAMOgYIABAFEB5Q2BBY7DVgkztoAnAAeAOAAZQHiAGVLZIBDTAuMy4zLjEuMS4zLjKYAQCgAQGqAQdnd3Mtd2l6sAEA&sclient=gws-wiz&ved=0ahUKEwicnMSU3cjwAhWWdd4KHaVlDHgQ4dUDCAo&uact=5
 
如果模块 A 进行二进制的时候依赖模块 C 1.1.0,app 里面依赖 C 1.2.0,而 C 的某个被 A 调用的方法在 1.2.0 版本里面改名字了,app 链接阶段不会报错,运行时 A 调用相关方法的时候会崩溃
 
  • 在 .m 里面使用别的模块的 .h 定义的符号(宏,常量……),需要留意

    1. 如果制作二进制的时候和最终 app 构建的时候,.h 中的符号的定义变了,会有坑

    2. 如果模块 A 进行二进制的时候依赖模块 C 1.1.0,模块 B 进行二进制的时候依赖模块 C 1.1.1,而这个两个版本的 C 有 .h 中的符号修改,会有坑

 
posted @ 2021-06-03 10:42  zzfx  阅读(108)  评论(0编辑  收藏  举报