玩转IDEA项目结构Project Structure
|
2、静态库二进制方案的探索 虽然我们已经在Ci的在应用了Ccache已经有提升近一倍的出包速度了,但是存在的问题也比较明显。 在去年的某次技术周会上,我们的大佬提出了使用二进制编译的自研任务,可以更进一步提高研发效率。得到了大佬的启发后,就一直在实践与探索二进制之路上。 我们的项目使用 CocoaPods 来管理第三方库和私有库的依赖,对大部分项目来说应该是标配了。目前还是纯 Objective-C 的项目,有少量C++,暂没有引入 Swift。 3、 调研过的二进制组件方案 下面列出研究过的一些主流方案以及最后没有采用的原因,这些方案有各自的局限性,但是也给了我不少启发,思考过程跟最终方案一样有价值。 3.1、Carthage Carthage可以将一部分不常变的库打包成framework,再引如到主工程,这样可以减少开发过程中的编译时间。Carthage 可以比较方便地调试源码。因为我们目前已经大规模使用 CocoaPods,转用 Carthage 来做包管理需要做大量的转换工作,变动太大,不满足我们的无侵入、无影响现有的业务,所以不考虑这个方案了。 3.2、cocoapods-packager cocoapods-packager 可以将任意的 pod 打包成 Static Library,省去重复编译的时间,一定程度上可以加快编译时间,但是也有自身的问题:
3.3、cocoapods-binary Cocoapods-Binary(Cocoapods 官方推荐的二进制插件), 是一个即时生成二进制包并缓存,而非像 CocoaPods-Packager 仅仅针对单个私有库的。原理是通过 CocoaPods 提供的 pre_install hook 在 pod install 的 prepare 阶段拦截到当前的 pod install context,进而 fork 出一份独立的 installer 以完成将预编译源码 clone 至 Pod/_Prebuild 目录下,同时也存在几个不足之处:
(编辑:平凉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

