iOS 一步步带你实践组件二进制方案

本文介绍了iOS组件二进制化的必要性和常见方案,重点讲解了如何创建pod私有库、打包静态库,并通过tag切换和Ruby环境变量实现源码与二进制库之间的切换,以提高项目编译速度和便于管理。
摘要由CSDN通过智能技术生成

前言

随着业务的扩展、项目体积的增大,CocoaPods组件库越来越多,每次重新编译的时候速度越来越慢,这给我们提出了需要提高编译速度的需求。

为了提高项目编译速度,对于大量使用组件化开发的项目组而言,组件二进制化是必然要走的路线,虽然中心思想就是要将各个组件打包成.a二进制库,但是各个公司可能方案都不太相同,网上的方案也有很多可供选择,这里我大体总结成以下几种:

  • 分仓库管理
  • Carthage管理
  • podspec环境变量(宏管理)
  • podspectag管理(只针对私有库)

前两个就不在这里讨论了可以看看这篇讲解。今天重点给大家分享一下第三和第四种方案的实施,但是目前只能针对私有库实施,对于一些第三方的公有库目前没有什么好的方案(😁 有好方法的同学可以在评论区推荐一下)。

实施

1、创建pod私有库

😝 如果您对这一块很了解请跳过这一步直接看第二步

对于私有库的创建,一般我们会采用pod lib create XXX模板来进行构建(如果还不知道这条命令是干嘛的同学可以先移步了解一下理解CocoaPods的Pod Lib Create

这里我们拿ABC这个项目进行举例,首先我们执行pod lib create ABC创建ABC的私有库 CocoaPods会从https://github.com/CocoaPods/pod-template.git下载模板文件,并询问你一些构建信息,正常填就好了。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

以下资料在群文件可自行下载!

推荐阅读
iOS开发——最新 BAT面试题合集(持续更新中)
[MichaeldeMacBook-Pro:~ michaelwu$ pod lib create ABC
Cloning `https://github.com/CocoaPods/pod-template.git` into `ABC`.
Configuring ABC template.

------------------------------

To get you started we need to ask a few questions, this should only take a minute.

If this is your first time we recommend running through with the guide: 
 - https://guides.cocoapods.org/making/using-pod-lib-create.html
 ( hold cmd and double click links to open in a browser. )

What platform do you want to use?? [ iOS / macOS ]
 > 

复制代码

一般如果我们构建好了的话工程目录会类似这样一个结构:

.
├── ABC
│   ├── Assets
│   └── Classes
├── ABC.podspec
├── Example
│   ├── ABC
│   ├── ABC.xcodeproj
│   ├── ABC.xcworkspace
│   ├── Podfile
│   ├── Podfile.lock
│   ├── Pods
│   └── Tests
├── LICENSE
├── README.md
└── _Pods.xcodeproj -> Example/Pods/Pods.xcodeproj
复制代码

这里你会发现,CocoaPods已经帮我们创建好了Demo、源文件目录、Podfilepodspec.gitignore文件等(真是一个贴心的小家伙),而且很规范,Demo文件在Example目录下

窥视一下podspec文件你就明白了源码需要指定在./Classes/**/*路径下

 s.source_files = 'ABC/Classes/**/*'
复制代码

为了演示效果,我们创建两个源文件ABC.hABC.m并放入Classes路径下,同时将默认的ReplaceMe.m删除

[图片上传中…(image-b08f0c-1594108050326-4)]

接着在Example下执行pod install,可以发现ABC.h/m已经导入成功

[图片上传中…(image-e75b0-1594108050326-3)]

至此,我们就明白了私有库的创建过程,需要编写源代码需要放入指定目录下并在执行pod install进行同步

2、创建静态库

组件二进制其实指的就是打包成动态库/静态库,由于过多的动态库会导致启动速度减慢得不偿失,此外iOS对于动态库的表现形式只有framework,若想做源码与二进制切换时,引入头文件的地方也不得不进行更改,例如:

import <ABC.h> // 源码引用
i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值