复习:
二进制解决的是编译慢的问题,直接编译成一个二进制,省去编译的过程。
静/动态库的操作
二进制实践:
1、手动打包,组件库测试工程添加一个.framework静态库,拖入引用代码。编译成静态库放在和源码文件层次的同一个层次的文件夹Products中,头文件要单独弄一份出来。源码和二进制的切换。创建库工程或者创建复合工程,目的就是拿到.framework。
2、自动打包方案:就是本篇要说的——对已经上传到远程的、打好标签的
本地源码进行二进制化,17'18''。
一、cocoapods-packager
1. 作用:快速完成类库的打包。仅仅针对于pod模板库,找到spec,进行打包;
2. 安装:sudo gem install cocoapods-packager
,如果安装成功但使用package命令时显示没有package,考虑重装cocoapods。
3. 使用:环境变量选中是源码 pod package spec文件名
(注意:是在本地模板库文件夹下,使用该命令,即本地有podspec文件的那个文件夹下,该命令会根据podspec中的信息去打包,见《快速打包命令在哪个文件夹下使用.png》)。
4.使用快速打包前提:该工程是模板库工程;已经上传到远程;已经打好标签。
5.打好包的文件在何处:在podspec同一个文件下,即执行快速打包命令的那个文件夹下,继续进入ios/XX.framework/version/A文件夹中。
6.包信息:模拟器和真机的所有CPU构架
7.小问题:如果pod update安装一下,发现安装的不是最新tag版本,应该变成二进制库的没有变成二进制库,那么,方案一:pod cache clean -all、删除pod文件夹、删除Podfile.lock 、删除.workspace;如果方案一无法解决,那就方案二:pod repo update
(把库更新下,不过时间会比较长)
- 直接
pod package spec文件名
,如果有环境变量,则会报错:podspec has binary-only depedencies, mangling not possible.
- 有环境变量的一定要加上环境变量:
IS_SOURCE=1 pod package XMGSegmentBar.podspec
; - 生成XMGSegmentBar-0.1.0文件夹,里面有生成的库。
- 把生成好的二进制库放入products文件夹,这个文件夹是我们规定好存储二进制文件的。
- git提交到远程仓库,至于XMGSegmentBar-0.1.0文件夹是快速打包生成的,可删可不删,没什么用了。
- 宿主工程使用。
pod update --no-repo-update
应该会有两个库会变成二进制,因为这两个做了二进制,且默认安装二进制。
二、自动打包都省略了哪些步骤
- 在库测试工程中添加targets(即.framework库);
- 修改.framework库对应的设置(全构架、静态库、暴露头文件、release版本);
- 拖文件到静态库对应的文件夹中。
~操作库的一些命令:
- 查看库的构架:lipo -info 库名
- 裁剪库:lipo -remove armv7s XMGSegmenBar -output XMGSementBarRemove7s (XMGSegmenBar、XMGSementBarRemove7s都是库名,从库中拆减掉armv7s 构架)