创建私有 CocoaPods 仓库

2018-01-04  本文已影响38人  第九号线

说明

创建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

上一篇 下一篇

猜你喜欢

热点阅读