2021年10月20日,由58同城与稀土掘金联合主办的58技术沙龙 《 Swift&OC混编基础设施建设技术沙龙 》 正式与大家见面!本次沙龙由58同城用户价值增长部高级架构师彭飞老师出品,共邀请58同城的6位嘉宾进行6大选题的分享。沙龙获得很好的反馈,现将沙龙分享视频回顾及PPT同步给大家。
整体视频回顾:live.juejin.cn/4354/500149…
ppt获取:tech.58.com/activity/#/…
议题一:58同城Clang Module实践和编译时间优化
视频回顾:live.juejin.cn/4354/155536…
议题介绍: 主要介绍Clang Module构建过程,以及在58同城中混编实践中的编译时间分析和优化方案。
用户痛点: 组件化中混编环境需要引入Clang Module,但会导致编译时间加长,如何进行编译时间上的优化?
新技术/实用技术点:
1.Clang Module的构建过程
2.通过LLVM/Clang分析编译耗时
3.Module编译时间优化
听众收益:
1.了解Clang Module的编译原理
2.了解如何基于多app复杂业务实施Clang Module改造
3.了解Module编译时间的分析和优化思路
议题二:基础组件的混编改造实践
视频回顾:live.juejin.cn/4354/696967
议题介绍: 主要介绍集团内部SDK以及三方SDK如何实现Module化改造,以及在实践过程中哪些API需要重点处理,作为独立SDK,如何快速实现OC到Swift的代码切换
用户痛点:
- SDK如何支持module化混编?
- 新旧SDK改造module有何不同?
- .a .framework处理有何不同?
- OC-API如何去适配?
- OC-Swift如何快速转化
新技术/实用技术点:
1.modulemap的添加
2.宏load等典型API的处理
3.SwiftRewriter的实现
听众收益:
1.了解SDK如何支持混编实践
2.提供OC的API在Swift中调用的处理方案
3.了解语言转化的大致原理与流程
议题三:Swift在58安居客房产业务实践
视频回顾:live.juejin.cn/4354/696967
议题介绍: 主要介绍Swift在房产的混编实践,以及混编开发过程中与现有机制的冲突与解决方案。
用户痛点: Swift与OC如何混编,Swift与OC混编开发中底层特性的差异导致与现有机制的冲突如何解决?它与OC混编的性能怎么样?怎么控制风险以及代码质量。
新技术/实用技术点:
- 通过Module化自动桥接
- 反射原理
- 混编注入绑定方案 听众收益:
- 了解项目中如何Module化
- 了解OC底层特性以及反射相关原理
- 了解多种注入绑定方案以及优缺点
议题四:基于SwiftLint的Swift代码质量控制
视频回顾:live.juejin.cn/4354/588671…
议题介绍: 主要介绍多App协同下如何制定Swift编码规范,以及如何基于SwiftLint二次开发搭建代码质量平台。
用户痛点: 如何根据各自的业务特点灵活制定Swift代码规范?如何构建Swift警告修复收益平台?
新技术/实用技术点:
- 搭建可调试的SwiftLint环境;
- 改造SwiftLint的代码,为自己的业务量身定制代码规范;
- NodeJS+MySql+Flutter搭建警告修复平台
听众收益:
1. 理解SwiftLint的工作原理
2. 了解SwiftLint改造的方法
3. 了解搭建警告平台的技术方案及细节
议题五:基于mach-o的混编环境下无用代码检测实现
视频回顾:live.juejin.cn/4354/418929…
议题介绍: 主要介绍Swift&OC混编项目无用代码检测的实现原理及探索过程。
用户痛点: 混编项目的Swift的二进制存储与OC有较大的差异,业界常用的技术方案无法满足Swift的无用类检测。目前已知的技术手段包括Appcode开发工具、基于indexstoreDB的pecker、基于二进制分析的WBBlades可以满足Swift的无用类检测。
新技术/实用技术点:
- 混编项目二进制的存储规则
- 如何在二进制中判断Swift类被使用
- 二进制文件检测与段迁移等技术的冲突解决 听众收益:
- 深入了解Swift的二进制存储特征
- 了解段迁移、反汇编等多种技术与二进制之间的相关性
议题六:基于mach-o的APP机审工具实现
视频回顾:live.juejin.cn/4354/208156…
议题介绍: 基于Mach-O 文件确定是否使用私有库,是否使用私有 API,是否使用敏感字段,是否存在未声明就使用的权限。
用户痛点: 提交APP审核时,官方机审结果不可预知性,出现问题才能知道,事半功倍。
新技术/实用技术点:
- 如何基于Mach-O解析出OC类型的Class,Method,String
- 如何基于Mach-O解析出Swift类型的Class,Method
- 如何基于Mach-O扫描出用户权限听众收益: 能深入了解基于Mach-O技术在机器审核上的应用,并基于此应用可以扩展到其它应用场景。