在上篇文章中介绍了Cocoapods私有库的创建
有些时候我们并不希望别人引用咱们的库的时候看见我们的相关实现代码,这个时候就需要将相关代码,打成静态库。
第一 .a和.framwork的区别:
iOS静态库形式和动态库形式:
静态库:.a和.framework
动态库:.dylib和.framework
.a是一个纯二进制文件,.framework中除了有二进制文件外还有资源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework
第二 我们可以通过两种方式进行静态库的打包,
1是手动打包比较麻烦,网上有好多相关教程,这里就不一一介绍了
2命令行打包,这个比较简单,一条命令即可
1)安装打包插件
终端执行以下命令
sudo gem install cocoapods-packager
2)进入私有库目录 然后将源码导入classes 目录下 然后执行下面的命令
pod package demo.podspec --library --force
其中--library指定打包成.a文件,如果不带上将会打包成.framework文件。--force是指强制覆盖。
这个时候目录下会多出一个文件夹
屏幕快照 2019-02-24 下午2.10.29.png
然后将framework文件复制到aesEncrypts/Framework/下面
第三 配置相关私有库信息
1)将相关framework导入私有库目录下
2)配置spec文件
屏幕快照 2019-02-24 下午2.13.58.png
管理.framework
跟管理.a类似,同样是生成通用framework。只不过podspec有点不同。.a是s.vendored_libraries,.framework是s.vendored_frameworks。
3).tag标记,并且上传
/// 第一次需要在前面加一个v
git tag "v1.0.0"
git push --tags
6.验证.podspec
方式一
// 加上--verbose验证失败会显示详细的报错信息
pod spec lint aesEncrypts.podspec --verbose
方式二
pod spec lint
7.发布自己的.podspec到cocoapods
pod trunk push aesEncrypts.podspec
如果有警告用:pod trunk push aesEncrypts.podspec --allow-warnings
注意:注意cocopods 版本 不要用beta 版本进行创建,要不lib 验证可以通过,但是spec 方式验证会出错。
pod spec相对于pod lib 会更为精确,pod lib相当于只验证一个本地仓库,pod spec会同时验证本地仓库和远程仓库。 如果spec文件不通过,spec 文件是不能上传到远程仓库
网友评论