iOS 创建属于自己的公开库

前言

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 版本号
image.png
  • 如果当前版本过低,需要升级:
sudo gen install cocoapods
pod setup
  • 查看是否已经注册Trunk (我已经注册过)
pod trunk me
image.png
  • 注册Trunk
// --verbose 可以输出详细的Debug信息
pod trunk register zhangsan@163.com "zhangsan" --verbose
// zhangsan      -----> 用户名
// zhangsan@163.com    -----> 邮箱地址

注册完成后,会收到一封邮件信息,进入邮件信息链接,确认注册

  • 注册成功后可以再一次使用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" => "15249085279@163.com" }
  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


    image.png

    passed validation 表示验证通过

  • 6、发布
    发布时会验证 Pod 的有效性,如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符,那么发布的时候也应该使用相同的字段修饰,否则出现相同的报错。
    pod trunk push WYQProgressHUD.podspec

  • 7、审核通过后,我们就可以验证使用自己的公开库
    pod search WYQProgressHUD
    如果出现未找到的情况,
    rm ~/Library/Caches/CocoaPods/search_index.json
    pod setup

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容