cocoapod私有库创建管理与使用(一)
环境准备
- 本地已安装好最新的cocoapods环境
- xcode和mac os系统已是最新版本
- 已申请gitee账号
参考资料
Publish Your Pods on CocoaPods with Trunk
感谢上面三位作者编写的博客支持我完成cocoapod私有库创建管理与使用
这篇博客的编写。
一、创建远程pod仓库
-
首先我们需要准备一个空白的远程git仓库, 我们在gitee上创建一个名为HFMessage的空白代码仓库
创建一个远程的pod仓库, 执行下列命令
pod repo add HFMessage https://gitee.com/panyongjie/HFMessage.git
执行命令后,会将远程仓库下载到本地硬盘上,本地目录的地址是/Users/用户名/.cocoapods/repos
进入本地磁盘进行查看
二、创建本地pod lib仓库
执行pod lib create 仓库名称
pod lib create HFMessage
创建成功后的目录如下
进入Example文件夹下执行pod install
,然后运行项目到模拟器上。不执行pod install 直接运行模拟器会出现下列的错误 ERROR | [iOS] unknown: Encountered an unknown error (Could not find a
iossimulator (valid values:)
三、Pod lib仓库版本管理
1.修改Spec配置文件
对spec文件进行如下修改
2.检查Spec配置文件
在podspec文件统计目录下执行下列命令
pod lib lint HFMessage.podspec --use-libraries --allow-warnings --verbose
配置正确的情况下可以看到如下输出
3.添加源代码并上传到git服务器
添加源代码到项目中
执行下面的命令将代码提交到远程服务器
git init
git add .
git commit -m “提交日志”
# 这里的tag必须和spec中的s.version中的内容一致,如果不添加tag,
# 进行pod repo push时会发生remote 错误
git tag ‘0.1.0’
# 添加远程服务器地址,这里不能有多余的空格,否则执行命令会提示格式不正确
git remote add origin https://gitee.com/panyongjie/HFMessage.git
# 提交tag到远程git服务器
git push - -tags
# 提交代码到远程服务器
git push -u origin master
4. Pod lib 版本管理
4.1. 添加Spec管理git仓库
我们在gitee上创建一个名为
HFComponentSpec
的git空项目,然后执行下面的命令将这个仓库添加到pod 远程仓库中
pod repo add HFComponentSpec https://gitee.com/panyongjie/HFComponentSpec.git
执行成功后,输入pod repo list
查看仓库是否添加成功
4.2 创建Spec版本
执行下列命令创建Spec版本并上传Spec git远程仓库上
pod repo push HFComponentSpec HFMessage.podspec --use-libraries --allow-warnings --verbose
上传成功后会出现下面的输出
四、使用私有Pod lib
创建一个名为PodLibTest
的Application工程, 然后进入工程目录执行pod setup
1. PodFile配置
在PodFile文件中进行如下配置
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
# 因为pod 默认只会已github做为源进行搜索,如果使用了私有库则需要配置自己的私有库地址来作为源,这样pod搜索时就可以找到个人创建的私有库
source 'https://gitee.com/panyongjie/HFMessage.git'
source 'https://github.com/CocoaPods/Specs.git'
target 'PodLibTest' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for PodLibTest
pod 'HFMessage', '0.1.0'
end
2. 进行pod install
进入项目目录,先执行pod repo update
, 然后执行pod install
, 执行成功后打开项目可以看到如下的工程目录
3. 调用私有库
运行项目,可以看到调用正常
五、升级pod lib
1. 修改源代码文件
对项目源代码进行修改
2. 修改spec文件
3. 提交git源代码
同步git服务器代码到最新
将源代码提交到远程服务器上
4. 更新pod lib 远程仓库
执行下列命令进行pod lib 上传
pod repo push HFComponentSpec HFMessage.podspec --use-libraries --allow-warnings --verbose
上传成功后会出现下面的输出
git 上也可以看到最新的spec信息
5. 使用升级后的pob lib
执行pod repo update HFMessage,更新最新pod 远程仓库到本地。修改PodFile中的版本为0.2.0
,然后在执行 pod install就可以了。
六、常见错误
1. Remote branch xxx not found in upstream
进行 pod repo push 操作的时候提示远程分支版本不存在
解决办法:先将pob lib 项目源代码上传到git服务器上并打上0.1.0的tag,然后在执行pod repo push操作
2. deployment_target不匹配
执行报错了,提示我们当前的项目ios的部署版本是13.2, 没有对应的pod lib版本。
修改ios 部署版本为9.3,然后再次进行pod install
3. An unexpected version directory Classes
执行pod install,命令行中提示’An unexpected version directory Classes
was encountered’
这时因为你下载到本地的Spec仓库里面包含其它不必要的文件
删除掉除’HFMessage’和版本文件夹外的所有文件夹和文件,然后重新pod install
[图片上传失败...(image-dd97e9-1608864499737)]
4. Could not find compatible versions for pod
这是因为你没有创建名为HFMessage版本为0.3.2的pod lib仓库,按照上面的方式升级HFMessage版本0.3.2的pod lib仓库
然后再次执行pod repo update HFMessage,更新最新pod 远程仓库到本地
再次pod install就可以下载到最新版本到本地了
5. git错误
5.1 git remote add 执行无效
这时因为从网页上粘贴的命令行中带有多余空格,但是在命令行下又看不出来。只需要将此行命令进行手打就可以了
5.2 git push 出现merge 错误
虽然我们本地每次都将代码push到了git服务器上,但是可能因为缓存或者其它原因本地git版本不是最新的,所有每次push之前先执行一次"git pull"拉取一次最新的代码版本,然后在执行commit和push操作。
6. resource_bundle上传导致的错误
该文件夹内
s.resource_bundles = {
'lelePodsKit' => ['lelePodsKit/Assets/*/.xcassets']
}
资源文件不能copy进来 得拖到项目中再拖进来 不然报错
7.我的GitHub test
项目地址
https://github.com/godEyesLELE/lelePodsKit
仓库索引地址
https://github.com/godEyesLELE/lelePodsSpec