CocoaPods公有库
最近在学习CocoaPods公有库、本地私有库、远程私有库,其中遇到了许多问题,怕过后又忘记了,所以记录下来帮助自己也帮助他人少走弯路。做iOS 3年多未写过什么文章,感觉自己都对不起自己的技术了,新手第一次写文章,大神不要喷我。现在面试听说要求很多,都要GitHub有开源项目,有博客分享过技术文章...,生活不易呀,为了生存。
这文章先说说CocoaPods公有库,接下来的文章就讲讲本地私有库、远程私有库。啥叫CocoaPods公有库?比如我们经常用到第三方库AFNetworking、SDWebImage、MBProgressHUD,本人理解的CocoaPods公有库就是把自己做好的库、项目功能模块上传到开源仓库,上传CocoaPods的开源索引库repo,通过CocoaPods管理自己的库或者模块。这样管理项目就方便了,直接用CocoaPods安装即可。
一、安装cocoapod或更新cocoapods
需要安装新版的cocoapods,旧版的cocoapods可能不支持,会导致下面的步骤出错,所以先要更新cocoapods。我是用最新的1.5.0 beta版,如图:
我这里就不说安装cocoapods或者更新cocoapods了,请大家网上搜一下教程。
更新cocoapods的简单步骤:
$ sudo gem update --system// 先更新gem;
$ sudo gem install cocoapods// 安装cocoapods
$ pod setup//设置
如果gem升级失败,可能是ruby版本过低导致的,安装RVM来升级ruby。
二、创建远程仓库与本地代码关联
先在GitHub上创建新项目,这里我就直接用例子了,如图所示:
这里用的是选择公有库,私有的要钱的,最好添加ignore和证书license,证书在后面用到,可以去掉警告。创建成功项目里就只有ignore和license,选择地址clone项目到桌面。
cd到桌面,或者你想要的文件夹,clone项目到本地。
打开刚才clone的文件夹,我这里就直接用库,不带demo的,如果你们想要带demo的话也是一样的道理,只是路径填好就行了。一般在库里面创建Classes文件夹,名称随意,.podspec的资源路径填好就没问题,然后把你的库或者模块放在Classes文件夹里面,我就用我自己做的一个库,如图:
我这边就把远程库和本地代码关联了,只是没有把代码上传带远程仓库,你们也可以直接在本地创建库名,然后通过命令 git remote add origin 远程仓库地址 关联远程仓库 ,这我就不示范了。
三、创建.podspec文件和修改.podspec文件的内容
接着cd到库,命令执行,$ pod spec create PublicLib // PublicLib是你的库名称,这里创建.podspec文件,这个文件就是最重要的。你再去看看你的库是不是多了一个.podspec文件,如图:
打开.podspec文件,通过xcode打开,修改相应的内容,想详细了解更多的.podspec文件内容,请看官网介绍:Specs and the Specs Repo。把不需要的删除,修改完后如图:
.podspec文件内容那么多,为啥就只剩这一点点了,#开头的是注释的,用不到的,看着有点乱,所以就删了。
s.name一般不需要修改,它对应.podspec文件的名字,如果不相同就会报错;
s.version是你库的版本号;
s.version库简介;
s.description库描述,这个库描述一定要比简介长;
s.homepage远程仓库的主页,对应你项目库的主页,不是项目地址,不带.git后缀的;
s.license是证书,刚开始创建远程项目时选择的;
s.author作者联系名和邮箱;
s.platform支持的平台,这个必须要的,要不会包错,包没有找到头文件或者没有找到UIKit;
s.source资源的地址和tag,这里的地址是库的地址,带.git的,tag要对应远程的tag;
s.source_files资源文件,通过这路径找到对应的文件;
s.public_header_files暴露的.h文件,用到静态库;
s.requires_arc是否支持ARC;
s.ios.vendored_libraries静态库路径,我这里用到了静态库。
这里如果没有填写正确,会遇到很多坑,文件路径一定要填写好,如果我这里不是直接Classes文件夹,而是Classes文件夹在Lib文件里面,Lib文件是跟.podspec文件同目录的,那么路径就要Lib/Classes/**/;还有这里你有没有发现我的静态库.a文件跟.h文件名字不一样,那是我后来改的,如果用到了系统外的就要以lib开头的.a,所以我就在原来的基础上更改了。这是我查了很久资源才知道的,当时一直报错。。。
温馨提示:
.podspec文件的内容配置要根据你的项目库来填写,里面还有许多我没有用到的,比如资源库、依赖第三方的库、frame框架、系统的库等等。这些都需要你们到官网看看介绍,或者看其他人的介绍,这我就不一一介绍了。
这些在别人文章找到的:
vendored_frameworks:配置需要引用的非系统框架
写法:vendored_frameworks ='Frameworks/LibFramework.framework'
frameworks:配置依赖的系统框架
写法:frameworks ='AVFoundation','CoreGraphics','Security','SystemConfiguration'
vendored_libraries:配置需要引用的非系统静态库(要注意,这里的.a静态库名字必须要带lib前缀,如果引用的静态库名字没lib前缀会导致编译报错,只需要重命名加上即可)
写法:vendored_libraries ='Classes/libQYHKeyBoardManager.a'
libraries:配置依赖的系统库(要注意,这里的写法需要忽略lib前缀)
写法:libraries ='c++','sqlite3','stdc++.6.0.9','z'
resources:配置资源文件(.bundle,.png,.txt等资源文件,这些资源文件会被放到mainBundle中,要注意避免发生命名重复的问题)
写法:resources ='Resources/QYHKeyBoard.bundle'
resource_bundles:配置指定bundle的资源文件(可以解决resources导致的命名冲突问题)
写法:resource_bundles = {'QYHKeyBoardBundle'=> ['Resources/QYHKeyBoard.bundle'],}
dependency:依赖的三方库
写法:dependency 'AFNetworking','~>3.1.0'
四、把本地代码上传到远程仓库和打tag版本
配置好.podspec文件,接着就是把代码上传到远程仓库,通过
$ git add . ;
$ git commit -m “XX” ;
$ git push。
打tag,打的tag一定要对应版本号,因为.podspec文件配置已经写好跟版本号一样的,通过
$ git tag '0.0.1' ;
$ git push --tags;
如图所示:
五、注册Cocoapods账号
可以先查看你本机有没有注册过Cocoapods账号,通过 $ pod trunk me ,如果没有信息就证明没有注册过,需要注册。输入$ pod trunk register 邮箱地址 ‘用户名’ --description='描述信息' 注册,然后在你注册的邮箱收到邮件,打开邮件复制链接打开网页激活验证注册,然后跳到pod官网提示pod trunk push。
$ pod trunk me //查看有没有注册,有的话就是相关的注册账号的信息
$ pod trunk register 邮箱地址 ‘用户名’ --description='描述信息' //注册Cocoapods账号
$ pod trunk push xx.podspec --allow-warnings //提交到pod,最后用到
如图是本人自己操作的,pod trunk me有显示库,是我之前弄的。
六、验证pod是否能通过
上传代码后,然后验证pod是否能通过:
$ pod lib lint 本地验证
$ pod spec lint 本地和远程验证
$ pod lib lint --verbose 显示详细的检测过程,出错时会显示详细的错误信息
$ pod lib lint --allow-warnings 允许警告,用来解决存在警告导致不能通过校验的问题
如果出现绿色字passed validation就是验证通过,如图所示:
七、提交pod和检查库
pod验证通过了,就接着执行$ pod trunk push xx.podspec --allow-warnings,等几分钟,结果报错了。
pod上面已经有相应的名称了,所以要更改名称了。我目录的文件夹和.podspec文件名和.podspec文件里面的s.name都全部更改了,要不会报错,如图:
这次成功了,如果所示:
再执行$ pod trunk me 可以看到自己的信息,包括自己的库,如上图所示。
然后通过搜索库看能不能搜索出来,$ pod search XX ,结果搜不出来,因为是pod的缓存问题,是从缓存的repo搜索的。把缓存删除了,通过$ rm ~/Library/Caches/CocoaPods/search_index.json 把缓存删掉,再$ pod search XX搜重新从网上搜索缓存下来。如图,如果能搜到就成功了,直接就可以用pod 安装管理了。
$ pod search XX //搜索库
$ rm ~/Library/Caches/CocoaPods/search_index.json //删除pod的缓存
八、版本更新
版本更新跟之前的步骤差不多,这就简单说一下步骤:
1.修改.podspec文件中的版本号;
s.version = "0.0.2" //修改0.0.2版本,不能是之前的版本,要不提交不成功
2.上传到远程仓库;
$ git add . ;
$ git commit -m “XX” ;
$ git push。
3.打tag并上传;
$ git tag '0.0.2' ;
$ git push --tags;
4.验证pod并提交到pod。
$ spec repo //查询repo
$ pod spec lint --allow-warnings //远程本地pod验证
$ pod trunk push PublicLibQiuyh.podspec --allow-warnings //提交pod
$ pod search PublicLibQiuyh //查询库
第一次写文章,用了好久的时间,不过有点成就感,嘻嘻!!!
喜欢点个赞呗!!!