创建私有 CocoaPods 仓库

说明

创建CocoaPods仓库的目的:
  1. 点亮技能树
    整理总结知识点,点亮技能树。
  2. 创建私有库:模块化,有效管理代码
    随着项目迭代增多,代码量增大,维护、开发人员更新换代,代码会越来越难以管理。模块化能高效管理代码。
  3. 共同修改公共库,提高技术
    如果你的公共库够酷、够靓,一起修改BUG的人自然就多。可以很好地提高自己。
  4. 树立自己的品牌形象
    这个就不用说了吧,你懂得。
创建CocoaPods仓库的步骤:
  1. 创建一个仓库(Spec repo)
  2. Git到本地,并创建一个新的项目
  3. 添加podspec文件
  4. 上传本地库到Github上
  5. 验证podspec文件
  6. 创建私有Spec Repo
  7. 本地测试pod spec文件
  8. 添加podspec文件到私有Spec Repo
  9. 测试私有 pod
  10. 发布稳定的公有release版本

一、在git服务器上新建仓库(Spec repo)

github 上添加私有仓库是收费的。可以建立自己的git服务器(使用Gitlab, Coding, Bitbucket等等)。这里以GitHub为例创建。

6F51CF41-176B-43C3-8913-7889010CB8BC.png

说明:

  1. 命名仓库的名字。
  2. 一句话描述仓库。
  3. 公共仓库,大家可以查看。如果选择Private,要收费,每月$7。
  4. 所使用的语言。
  5. 通用协议。

二、Git到本地,并创建一个新项目

  1. 在终端中输入

    $ git clone git@github.com:wuyaGit/WYVideoRecordView.git
    
0F3BCA7E-6118-4A76-AA67-C648629B123D.png

在你的Finder中可以看到WYVideoRecordView了


43636725-2405-4981-8900-28539CA5E259.png
  1. 在WYVideoRecordView文件夹中创建一个新项目,目录结构如下


    9F0610DB-FE81-47DE-92E5-23DD917562CF.png
01727A47-5D48-48A7-8B86-B844EB557F95.png

说明:
(1)WYVideoRecordView,制作的公共库的文件;
(2)WYVideoRecordViewDemo,用来测试我们的公共库。(备注:最好使用这种方式来命名,否则添加podspec文件时可能会出现问题。)

三、创建podspec文件

创建podspec文件有两种方法:

  1. 使用终端

    $ pod spec create WYVideoRecordView
    
  2. 从成熟的开源项目中复制

Objective-C的podspec模板

Pod::Spec.new do |s|
    s.name         = "WYVideoRecordView"     
    s.version      = "0.0.1"         
    s.summary      = "WYVideoRecordView"       #简短介绍
    s.description  = <<-DESC
                        录制视频的自定义UI。使用Objective-C语言,支持iOS8及以上版本。
                        DESC
    s.homepage     = "https://github.com/wuyaGit/WYVideoRecordView"
    # s.screenshots  = "www.example.com/screenshots_1.gif"
    s.license      = { :type => 'MIT' }          #开源协议
    s.author       = { "wuyaGit" => "yoounglolo@gmail.com" }

    s.source       = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git" }
    ## 这里不支持ssh的地址,只支持HTTP和HTTPS,最好使用HTTPS
    ## 正常情况下我们会使用稳定的tag版本来访问,如果是在开发测试的时候,不需要发布release版本,直接指向git地址使用
    ## 待测试通过完成后我们再发布指定release版本,使用如下方式
    #s.source       = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git", :tag => s.version }

    s.platform     = :ios, "8.0"  
    s.requires_arc = true                 #是否使用ARC

    s.source_files  = "WYVideoRecordView/*.{h,m}"

    s.frameworks = 'UIKit', 'Foundation'    #多个用逗号隔开
    s.module_name = 'WYVideoRecordView'              #模块名称

    # s.dependency "JSONKit", "~> 1.4"    #该项目所依赖的其他库,如果有多个可以写多个 s.dependency
 end

Swift的podspec模板

 Pod::Spec.new do |s|
      s.name         = "SwiftTheme"
      s.version      = "0.0.1"
      s.summary      = "录制视频的自定义UI。使用Objective-C语言,支持iOS8及以上版本。"
      s.homepage     = "https://github.com/wuyaGit/WYVideoRecordView"

      s.license      = 'MIT'
      s.author       = { "wuyaGit" => "yoounglolo@gmail.com" }
      s.source       = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git", :tag => s.version }

      s.platform     = :ios, '8.0'
      s.requires_arc = true

      s.source_files = 'Source'
end

目录结构如下:


987DBD51-13B2-448D-8CC7-00D7A7B98E95.png

我们可以验证一下podspec是否正确。命令行输入:

$ pod lib lint
B052B356-8186-4A74-B800-2093D011D525.png

一个警告:source: Git sources should specify a tag.
工程中没有生成正式的 release 版本, github 上并没有任何 tag,填写 .podspec 文件填写 git 地址的时候没有填写指定 tag 。这个警告可以使用--allow-warnings忽略。

$pod lib lint --allow-warnings

一个错误:[iOS] file patterns: The source_files pattern did not match any file.
这是因为我们的工程还没有上传到GitHub,所以找不到路径。

四、上传本地库到Github上

在终端输入:

$git add . 
$git commit -m "添加了 .podspec文件"
$git push

GitHub目录结构:


B7E58C40-A54F-4A81-88E1-FF10CF13EA42.png

五、验证podspec文件

再验证一下podspec是否正确。命令行输入:

$ pod lib lint --allow-warnings

结果如下:


B95C4968-5725-48F5-A7AD-9258A50B3DEE.png

说明我们的GitHub上的仓库没有问题,podspec文件正确。

六、创建私有Spec Repo

1. 查看公共 CocoaPods

首先查看下本地的.cocoapods文件夹

输入命令:
//打开隐藏的命令:
$defaults write com.apple.finder AppleShowAllFiles -bool true
//关闭隐藏的命令:
$defaults write com.apple.finder AppleShowAllFiles -bool false

重启Finder,然后在Finder中查询~/.cocoapods 或 /Users/[username]/.cocoapods。可以看到Cocoapods所有公有的Spec Repo:

2E2469A4-BCC6-40DE-AC5D-A069C64A4049.png

我们看到master目录的结构是这个样子的

#~/.cocoapods/repos 大致目录是这样的
├── Specs 
     └── [SPEC_NAME] 
              └── [VERSION] 
                       └── [SPEC_NAME].podspec
2. 创建私有 Spec Repo

在终端执行命令:

$pod repo add WYVideoRecordView https://github.com/wuyaGit/WYVideoRecordView.git

master目录结构发生了变化:
2FB19CB9-99A3-45FF-A97B-BC833118BC34.png

至此,我们已经在本地得到我们自己的私有仓库WYVideoRecordView。

七、本地测试pod spec文件

在本地新建项目WYVideoRecordViewTest,在profile文件中编辑:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

#屏蔽第三方库警告
inhibit_all_warnings!

target 'WYVideoRecordViewTest' do
    pod ‘WYVideoRecordView', :path => ‘~/WYVideoRecordView' # 指定路径
    #pod 'WYVideoRecordView', :podspec => '~/WYVideoRecordView/WYVideoRecordView.podspec'   # 指定podspec
end

执行命令:

pod install --verbose --no-repo-update

文件目录如下:
5EB7AB66-8DE3-4136-B6A7-0DC2AEC09064.png

重新编辑profile文件:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

#屏蔽第三方库警告
inhibit_all_warnings!

target 'WYVideoRecordViewTest' do
    #pod ‘WYVideoRecordView', :path => ‘~/WYVideoRecordView' # 指定路径
    pod 'WYVideoRecordView', :podspec => '~/WYVideoRecordView/WYVideoRecordView.podspec'   # 指定podspec
end

效果如图:
B23E1027-4BD6-414C-B6E3-8EDE0EB92769.png

总结:两种方式都可以添加私有库到工程中。

八、添加podspec文件到私有Spec Repo

执行命令:

$pod repo push WYVideoRecordView WYVideoRecordView.podspec

出现错误:
297BCCFB-2273-4680-A02E-345B43A732F4.png

出现not clean错误。

#The repo `WYVideoRecordView` at `../.cocoapods/repos/WYVideoRecordView` is not clean
#cd到repo的相关项目中
#git status 检查一下是否有未提交的东西,如果有就commit后push一下,如果没有就git clean -f 后push一下。

$cd ~/.cocoapods/repos/WYVideoRecordView
$git clean -f

重新执行命令:

$pod repo push WYVideoRecordView WYVideoRecordView.podspec --allow-warnings --verbose 
// --allow-warnings : 允许 警告,有一些警告是代码自身带的。
// --use-libraries : 私有库、静态库引用的时候加上 
// —verbose : lint显示详情

结果:
23F872E1-841C-45A8-9044-E3A8233D675C.png

进入到 .cocoapods 的目录:
6C274542-8B92-489C-BC4A-B02B3DE175C0.png

github 仓库也已经发生了变化:
8A140C62-E801-4CB2-BC8F-FD624A2E87A3.png

pod search下:

$pod search WYVideoRecordView
E8034228-566F-470C-97B9-E725BA8EF7BE.png

九、测试私有 pod

编辑profile文件:

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/wuyaGit/WYVideoRecordView.git'
platform :ios, '8.0'

#屏蔽第三方库警告
inhibit_all_warnings!

target 'WYVideoRecordViewTest' do
    #pod ‘WYVideoRecordView', :path => ‘~/WYVideoRecordView' # 指定路径
    #pod 'WYVideoRecordView', :podspec => '~/WYVideoRecordView/WYVideoRecordView.podspec'   # 指定podspec
    pod 'WYVideoRecordView'
end

项目结构如下:
96BFF321-80F5-4181-9E9A-3DE888EA22E6.png

到这里,创建私有库大功告成!

十、发布稳定的公有release版本

私有库创建完成后,如果想让别人也使用我们的库,可以发布公有版本。

1、 添加tag标记,生成稳定的 release

cd ~/.cocoapods/repos/WYVideoRecordView
git tag '0.0.1'
git push --tags
git push origin master

我们就得到了一个稳定的 release 版本 0.0.1:
D49940EF-6B9C-40D8-8A01-5F8891955D45.png

2、修改podspec 文件

s.source = { :git => "https://github.com/wuyaGit/WYVideoRecordView.git", :tag => s.version }

然后上传到GitHub。

3、检测是否已经注册了pod trunk账号

pod trunk me

4、创建pod trunk 用户

  #举例
  pod trunk register '邮箱'  '电脑描述'

5、验证邮件

pod会发邮件过了,验证一下。

6、再次检验用户

pod trunk me

7、上传到到Cocoapod

 pod trunk push WYVideoRecordView.podspec

如果有警告,那么我们要去修改警告或者忽略警告

pod trunk push WYVideoRecordView.podspec --allow-warnings

等待一下,提示:

//上传成功的提示
🎉  Congrats
🚀  WYVideoRecordView (0.0.1) successfully published
📅  April 25th, 00:08 
🌎  https://github.com/wuyaGit/WYVideoRecordView 
👍  Tell your friends!

8、验证是否可用

两种方式:
(1)删除我们在~/.cocoapods/repos/下创建的私有库,然后

pod search WYVideoRecordView

(2)在CocoaPod管理所有第三方库(CocoaPod管理的库)中所搜一下。

9、升级自己的库

1.修改项目
2.修改.podspece内部的版本号
3.上传github
4.打tag
5.上传podspece

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

推荐阅读更多精彩内容