前言
iOS开发过程中我们经常会使用到CocoaPods,进行第三方类库的管理;经常会使用到的cocoaPods命令行
cd ...// 打开并进入你需要创建podfile文件的工程目录
touch podfile // 创建一个可用文本编辑打开的podfile 文件
open -e podfile //打开刚才创建的podfile文件
pod search ...// 搜索我们需要使用的公开库(AFNetworking)
pod install... // 等待安装成功
为什么开发中我们使用CocoaPods管理第三方库?
1、传统使用第三方库的劣势
a.使用一个第三方SDK,需要在工程里面添加一堆配置,少添加一步配置就会报一大堆错误。这个时候为了排查少了哪一个步骤,只能从头开始重做一遍,太浪费时间和精力。有些配置还不好配置,就更使人烦躁郁闷了。
b.如果使用的第三方SDK有比较重要的更新,想使用最新的SDK只能到官方下载最新的SDK,重新导入到自己的项目工程中。
c.如果公司有多个项目,每一个工程都这样配置一遍,这是多么痛苦的领悟呀。
2、使用CocoaPods管理第三方库的优势
1、我们可以避免上诉的问题,使用方便。
2、方便我们自己管理,只需要更新版本就行了,以前的库还可以保留让他人使用。
从这一刻我教会你如何创建属于我们自己的公开库
Everybody,follow my footsteps,let's start together! I will show you something amazing!
如何创建属于我们自己的公开库呢?
- 1、注册Trunk :trunk需要CocoaPods 1.0.0版本以上,使用pod --version 查看当前Mac 版本号
- 如果当前版本过低,需要升级:
sudo gen install cocoapods
pod setup
- 查看是否已经注册Trunk (我已经注册过)
pod trunk me
- 注册Trunk
// --verbose 可以输出详细的Debug信息
pod trunk register [email protected] "zhangsan" --verbose
// zhangsan -----> 用户名
// [email protected] -----> 邮箱地址
注册完成后,会收到一封邮件信息,进入邮件信息链接,确认注册
- 注册成功后可以再一次使用pod trunk me 查看个人信息
- 2、GitHub上创建一个仓库,并将自己的代码进行上传
大家可以查看Mac上传代码至GitHub文章中我做了详细的介绍; - 3创建XXX.podspec文件
1.cd进入克隆的项目目录下
pod spec create XXX
// XXX ---> 表示你即将创建的框架名称
- 4、编辑.podspec文件 (可使用默认文本编辑打开)
下文附上我的一个公开库 WYQProgressHUD
Pod::Spec.new do |s|
s.name = "WYQProgressHUD"
s.version = "1.1.0"
s.summary = "提供网络加载等待层,用户操作成功、失败提示框"
s.description = <<-DESC
WYQProgressHUD 提供网络加载等待层,用户操作成功、失败提示框
DESC
s.homepage = "https://github.com/YongQiangWei/WYQProgressHUD"
s.license = "MIT"
s.author = { "yongQiang Wei" => "[email protected]" }
s.ios.deployment_target = "8.0"
s.source = { :git => "https://github.com/YongQiangWei/WYQProgressHUD.git", :tag => "#{s.version}" }
s.source_files = "WYQProgressHUD/*.{h}"
s.exclude_files = "Classes/Exclude"
s.resources = "MBProgressHUDExtend/MBProgressHUD.bundle/*.png"
s.dependency "MBProgressHUD","~> 1.1.0"
end
简单说明:
s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.homepage:项目主页地址
s.social_media_url:社交网址,这里我写的微博默认是百度,如果你写的是你自己的博客的话,你的podspec发布成功后会@你
s.license:许可证
s.author:作者
s.source:项目的地址
s.requires_arc: 是否支持ARC
s.source_files:需要包含的源文件
s.public_header_files:公开的头文件
//其他
s.resources: 资源文件
s.dependency:依赖库,不能依赖未发布的库,可以写多个依赖库
常见的写法:
1、dependency:写法
s.dependency = 'AFNetworking' , 'SDWebImage'
2、source_files: 写法
'runtime/'
'runtime/runtime/.{h,m}'
'runtime//.h'
''表示匹配所有文件
'.{h,m}' 表示匹配所有以.h和.m结尾的文件
'*' 表示匹配所有子目录
3、source: 常见写法
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :commit => "68defea" }
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :commit => "68defea", :tag => 1.0.0 }
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :tag => s.version }
commit => "68defea" 表示将这个Pod版本与Git仓库中某个commit绑定
tag => 1.0.0 表示将这个Pod版本与Git仓库中某个版本的comit绑定
tag => s.version 表示将这个Pod版本与Git仓库中相同版本的comit绑定
- 4、打上tag
// 为Git打上tag,相当于我们的版本号
git tag "0.0.1"
// 将tag推送到远程仓库
git push --tags
如果我们的tag打错了,没有用的时候,需要删除
首先我们查看tags
git tags //罗列我们所有的tags
删除本地tags
git tag -d + 分支 // git tag -d 0.0.1
删除远程分支
git push origin :refs/tags/分支
-
5、验证.podspec文件
验证时我会使用 --verbose 显示错误信息
pod spec lint WYQProgressHUD.podspec --verbose
在验证时,如果出现警告性问题,我们直接忽略
pod spec lint --allow-warning
passed validation 表示验证通过
6、发布
发布时会验证 Pod 的有效性,如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符,那么发布的时候也应该使用相同的字段修饰,否则出现相同的报错。
pod trunk push WYQProgressHUD.podspec7、审核通过后,我们就可以验证使用自己的公开库
pod search WYQProgressHUD
如果出现未找到的情况,
rm ~/Library/Caches/CocoaPods/search_index.json
pod setup