一 Cocoapods安装
-
查看数据源 :
gem sources
删除数据源 :gem sources --remove https://rubygems.org/
添加数据源 :gem sources -a https://ruby.taobao.org/
-
安装Cocoapods :
sudo gem install -n /usr/local/bin cocoapods
-n
: 代表安装目标
cocoapods默认安装在usr/bin/
目录下, 现在苹果不对用户开放这个目录了,所以,可以安装在/usr/local/bin
这个目录下 -
卸载Cocoapods :
sudo gem uninstall cocoapods
二 Cocoapods的简单使用
2.1 CocoaPods 工作流程
2.2 Cocoapods的重要路径
2.2.1 索引缓存路径
~/Library/Caches/CocoaPods/
- 如果发现框架信息本地已经缓存, 但是就是无法搜索框架, 可以更新一下远程私有库, 然后再删除这个索引文件, 重新生成
- 更新私有库 :
pod repo update
rm ~/Library/Caches/CocoaPods/search_index.json
pod setup
- 更新私有库 :
2.2.2 pod命令安装路径
/usr/local/bin
2.2.3 pod 框架索引信息缓存路径
/Users/电脑名/.cocoapods/repos/master/Specs
三 常见文件说明
3.1 Podfile
- 框架描述文件
- 创建命令 :
pod init
3.2 Podfile.lock
- 记录着上一次下载的框架最新版本
3.3 pod install 和 pod update 区别
pod install
- 如果Podfile.lock文件存在, 直接从此文件中读取框架信息下载安装
- 如果不存在, 依然会读取Podfile文件内的框架信息
- 下载好之后, 再根据下载好的框架信息, 生成Podfile.lock文件
update
- 不管Podfile.lock是否存在, 都会读取Podfile文件的的框架信息去下载
- 下载好之后, 再根据下载好的框架信息, 生成Podfile.lock文件
主要区别在于, Podfile文件内的框架信息, 版本描述没有指定具体版本, update就会下载最近版本的, 而install会根据Podfile.lock之前记录的版本下载, 好处在于多人开发能保持版本一致
3.4 多人开发注意
- 上传到共享库的只有图示的四个文件!!
四 制作 CocoaPods 库
- 创建框架描述信息podspec;
- 托管框架源码到 Git;
- 上传框架描述信息到 https://github.com/CocoaPods/Specs;
- 更新本地索引库
- 命令行
pod install
,将框架集成到项目中;
现在开始动手吧!首先在桌面新建一个 testLib 目录,在该目录下新建一个 Classes 目录,用来存放框架源码,然后将 testLib 托管到 Git。
你可以给 Classes 目录任意的命名,Classes 只是一种约定俗称的命名。
4.1 创建框架描述信息podspec
pod spec 命令用于创建框架的描述信息文件,文档如下:
https://guides.cocoapods.org/syntax/podspec.html
现在在 testLib 目录下执行:
pod spec create ADPodDemo01
注意
创建之前先查询是否已经存在testLib的库, 如果存在换成别的名字
目录下会创建一个 testLib.podspec
文件,然后编辑这个文件,主要有以下几个字段:
- version:这个 spec 映射的版本,保证 Git 的 releases 与此对应;
- homepage:项目主页;
- source:框架源代码的托管地址;
- tag:与 version 对应;
- source_files:框架源代码的目录、文件、文件类型等规则;
验证podspec是否正确
pod lib lint
4.2 托管框架源码到git
1. 初始化本地代码 : git init
2. 添加本地代码与远程仓库的关联 : git remote add origin <url>
3. 提交代码到暂缓区 : git add .
4. 提交代码到本地分支 : git commit -m x
5. 提交本地标签 : git tag 0.0.1
6. 提交本地分支代码和标签到远程仓库 : git push origin master --tags
4.3 上传框架描述信息
根据上面的步骤,现在你需要将生成的 testLib.podspec
文件上传到远程索引库,在此之前,你需要注册一个 Trunk 账号,文档如下:
https://guides.cocoapods.org/making/getting-setup-with-trunk.html
现在执行下面的命令,记得修改邮箱昵称描述等:
pod trunk register <email> '<username>' --description='mac desc'
你的邮箱会收到一封邮件,打开邮件里面的链接,会有类似 ACE, YOU'RE SET UP.
的提示,现在回到终端。
pod lib lint
检查 testLib.podspec 的合法性,根据错误提示修复问题,当显示 passed validation
后,执行下面的命令, 上传podspec描述文件
pod trunk push ADPodDemo01.podspec
提示信息如下:
? ADPodDemo01 (0.0.1) successfully published
? August 21st, 20:57
? https://cocoapods.org/pods/ADPodDemo01
? Tell your friends!
4.4 更新本地索引库
搜索查询是否存在
pod search ADPodDemo01
结果没有搜索到
[!] Unable to find a pod with name, author, summary, or description matching `ADPodDemo01`
解决方案
- 删除本地索引文件
search_index.json
rm ~/Library/Caches/CocoaPods/search_index.json
- 直接搜索,就会更新本地索引库以及创建本地索引文件, 可能需要一段时间
pod search ADPodDemo01
删除远程索引库
有时候如果提交有问题,可以执行一下命令删除:
// 直接废去这个pod
pod trunk deprecate ADPodDemo01
// 删除这个pod的某个版本
pod trunk delete ADPodDemo01 0.0.1
- 注意: 这两个指令执行完成之后,需要更新本地索引库才行, 不然, 依然可以搜到对应的库文件
仓库的相关指令
- 查看第三方框架仓库源
pod repo
- 移除仓库源
pod repo remove master
- 添加仓库源
pod repo add master http://git.oschina.net/akuandev/Specs.git
- 初始化(下载服务器中所有第三方框架信息, 缓存到电脑本地)
pod setup
五 Pod 相关报错总结
5.1 pod lib lint 报错问题总结
- RuntimeError - can’t modify frozen String- 解决方式
5.2 pod install
- NameError - uninitialized constant Concurrent::Promises
Did you mean? Concurrent::Promise
- 解决办法
gem install concurrent-ruby or gem update concurrent-ruby