iOS开发移动互联网技术分享

如何使用cocoapods制作第三方的镜像和静态库

2017-08-02  本文已影响239人  贺彦文

最近有新的项目要开发,除了基础库,整个业务代码全部重写,小伙伴们每天pod install和编译运行的次数非常多,而项目中的库都以源码的形式集成,势必造成编译时间大大加长.开发效率受很大影响.
因此把组件二进制化制作成静态库就呼之欲出了.我一直喜欢研究组件化的东西,但是做起来还是遇到各种问题,有些问题解决了才发现对cocoapods的流程有更加深刻的理解.那么我就说说制作组件的静态库的流程.
我现在的目标是把github的Masonry放到我自己创建的私有库,并且制作成静态库

1,把Masonry从github拷贝到本地

git clone https://github.com/SnapKit/Masonry

image.png

2,在私有云端创建一个空项目

image.png image.png

3,使用pod package Masonry.podspec命令制作静态库

image.png image.png image.png image.png
[!] Error installing Masonry
[!] /usr/bin/git clone https://git.coding.net/codingheew/Masonry.git /var/folders/cb/np76rpl52kqb5r16tp4njgrm0000gn/T/d20171016-26288-z1v7u8 --template= --single-branch --depth 1 --branch 0.7.1

Cloning into '/var/folders/cb/np76rpl52kqb5r16tp4njgrm0000gn/T/d20171016-26288-z1v7u8'...
fatal: unable to access 'https://git.coding.net/codingheew/Masonry.git/': Could not resolve host: git.coding.net
image.png

4,修改spec文件

image.png

5,上传代码到云端私有项目

到目前为止总结几点:1,第二步创建的云端私有项目还是什么都没有.2,而且云端私有项目和本地Masonry项目没有建立关系.3,本地Masonry已经具有静态库和一个描述正确的spec文件.4,接下来需要把本地完好的项目上传到私有云端.

image.png 图片 1.png 图片 2.png 图片 3.png 图片 4.png

6,pod spec lint进行远程验证

image.png

这是最后也是最关键的一步,这步的流程也就是cocoapods管理代码的核心流程,具体如下

事实上通过source和vendored_framework并存可以兼容已经写好的项目中存在大量#import "Masonry.h"的引入方式.这里多费点口舌,解释下,因为source指定了.h文件,cocoapods会把你指定的.h文件都暴露到framework以外,因此别人在导入的时候既可以通过#import "Masonry.h",也可以通过#import <Masonry/Masonry.h>的方式找到你的头文件

7,最后pod repo push把本地的spec文件提交到索引repo

image.png image.png image.png image.png image.png

8, 如何使用静态库

image.png image.png

最后说下第三步中减少pod package的执行时间.只说下思路,不进行截图了,免得对于一些初学者更乱了.
1,修改spec中source地址为项目地址
2,根据第5步提交代码以及tag到远程私有仓库
3,执行pod package Masonry命令
4,在第5步重新打标签需要多一步删除远程v1.1.0标签的步骤具体命令为
git push origin :'v1.1.0'
5,然后再重新commit 重新打标签 提交标签

文章中用到的代码都已开源
私有索引库地址 https://git.coding.net/codingheew/codingSpec.git
私有Masonry库地址 https://coding.net/u/codingheew/p/Masonry/git

上一篇 下一篇

猜你喜欢

热点阅读