使用Cocoapods创建私有podspec

整体说明一下创建私有podspec的步骤:

1,创建一个远程的git库用于存储代码,将新建的git库clone到本地,添加需要导入pod库中的代码。

2,创建并设置一个私有的Spec Repo。

3,在本地git库文件夹中创建pod所对应的podspec文件。

4,本地测试配置好的podspec文件是否可用。

5,向私有的spec repo中提交podspec。

6,在项目中的Podfile中增加刚刚制作好的Pod并使用。

7,后续更新维护podspec。

一,创建私有的Spec Repo

什么是 Spec Repo ? 它是所有的 Pods 的一个索引,就是一个容器,所有公开的 Pods 都在这个里面,它实际是一个 Git 仓库 remote 端在 GitHUb 上,但是当你使用了 CocoaPods 后它会被 clone 到本地的 ~/.cocoapods/repos 目录下。第一步先创建远端的 GitHub,并clone到本地:

    git clone git@github.com:Cuidawang/CKYTool.git
image

创建之后在 Terminal 中执行如下命令:

 # pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
 $ pod repo add CKYTool git@github.com:Cuidawang/CKYTool.git

此时如果成功的话,进入 ~/.cocoapods/repos 目录下就可以看见 CKYTool 这个目录了。到这第一步就完成了。

PS: 如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可。

二,添加需要的代码文件到CKYTool目录下

比如我选取了一个文件管理和一个分类的文件进行测试,将这两个文件添加到 CKYTool 中,

image

三,创建项目的podspec文件

使用终端命令cd到CKYTool文件下执行命令:

    pod spec create CKYTool

这时候本地会生成一个 CKYTool.podspec 文件,使用 sublime 打开 CKYTool.podspec 文件,删除不必要的注释,最后的文件形式如下:

Pod::Spec.new do |s|

  s.name         = "CKYTool"                            #名称
  s.version      = "0.0.1"                              #版本号
  s.summary      = "CKYTool."    #简短介绍
  
  s.description  = <<-DESC
    对这个pod文件进行描述,这的描述要比summary的长。
                   DESC

  s.homepage     = "https://github.com/Cuidawang/CKYTool"   #主页
  s.license      = "MIT"                                    #开源协议

  s.author       = { "Cuikeyi" => "https://github.com/Cuidawang/CKYTool" }
  s.platform     = :ios, "8.0"
  s.source       = { :git => "https://github.com/Cuidawang/CKYTool.git", :tag => "#{s.version}" }
  s.header_dir   = "CKYTools"                           #Pod安装之后的文件名
  s.requires_arc = true

  s.subspec 'XHCCategories' do |ss|
    ss.header_dir   = 'XHCCategories'

    ss.subspec 'NSDate' do |sss|
      sss.source_files = "XHCTools/XHCCategories/NSDate/**/*.{h,m}",
      sss.header_dir = 'NSDate'
    end

    ss.subspec 'NSString' do |sss|
      sss.source_files = "XHCTools/XHCCategories/NSString/**/*.{h,m}",
      sss.header_dir = 'NSString'
    end

    ss.subspec 'NSDate' do |sss|
      sss.source_files = "XHCTools/XHCCategories/NSDate/**/*.{h,m}",
      sss.header_dir = 'NSDate'
    end

    ss.subspec 'UIButton' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIButton/**/*.{h,m}",
      sss.header_dir = 'UIButton'
    end

    ss.subspec 'UIColor' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIColor/**/*.{h,m}",
      sss.header_dir = 'UIColor'
    end

    ss.subspec 'UIImage' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIImage/**/*.{h,m}",
      sss.header_dir = 'UIImage'
    end

    ss.subspec 'UIView' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIView/**/*.{h,m}",
      sss.header_dir = 'UIView'
    end

  end

  s.subspec 'XHCFileManager' do |ss| 
    ss.source_files = "XHCTools/XHCFileManager/**/*.{h,m}",
    ss.header_dir   = 'XHCFileManager'
  end

end

文件中的字段说明参考:http://guides.cocoapods.org/syntax/podspec.html

编辑完 podspec 文件后,需要验证一下这个文件是否可用,如果有任何的 Warning 或者 Error 都是不可以的,它就不能被添加到 Spec Repo 中,不过 xcode 的 Warning 是可以存在的,验证需要执行一个命令

pod lib lint

当如下图时,表示验证通过了

image

Tips:

1,去除Xcode的警告,可以通过命令屏蔽警告:

    pod lib lint --allow-warnings

2,如果出现Error但是提示信息不足,可以添加 --verbose 以获取更多的错误信息

    pod lib lint --verbose

四,提交文件到github,打tag,上传podspec

1,提交文件到github

git add .
git commit -m "first commit"
git pull origin master
git push origin master

2,提交tag

git tag -m "release 0.0.1"  0.0.1
git push --tags

3,上传podspec

pod repo push CKYTool CKYTool.podspec  #前面是本地Repo名字 后面是podspec名字

至此,我们的这个组件库就已经制作添加完成了,使用 pod search CKYTool 就可以找到这个库了。

Tips:

1,提交文件的顺序不能改变,一定要先提交tag标签,之后再上传podspec。否则会上传podspec失败。

2,对于 .podspec 文件,一定要放在文件的最外层,不然就报错。

五,使用制作好的Pod

在完成这一系列步骤后,我们就可以在正式的项目中使用这个私有的Pod了只需要在Podfile文件中添加:

platform :ios, "8.0"

# source 是pod去哪下载地址,写多个source会从上到下一次去加载
source 'https://github.com/Cuidawang/CKYTool.git'
source 'https://github.com/CocoaPods/Specs.git'

target "XXXX" do
    
    pod 'CKYTool'
    
end

然后执行 pod update ,更新依赖库,就可以看见自己的库文件出现在 Pods 子目录中,而不是 Development Pods 中。

Tips:

1,引用使用文件的时候,引用方式为 #import <NSString/NSString+URLEncoding.h>, 就可以找到文件的路径了。

2,也可以在Target -> Build Settings -> User Header Search Paths 中点击加号,添加 $(PODS_ROOT) ,后边设置成recursive,此时可以通过 #import "NSString+URLEncoding.h" 引入头文件。

六,关于Pod的升级

当前的版本是0.0.1,如果我们增加了一些代码文件,更新了一些代码,此时要发布0.0.2版本,需要怎么做呢?

1,修改代码文件,更新代码完毕之后,并更新 CKYTool.podspec 文件,修改s.version = '0.0.2',都修改完成之后,通过 pod lib lint 验证 podspec 文件是否有效,如果有效,进行下一步。

2,验证通过之后,提交自己的代码到git,然后打tag 0.0.2,(一定要打tag和s.verisonxiang相对应),然后提交tag。

3,提交完tag之后,接着上传podspec, pod repo push CKYTool CKYTool.podspec。此时 pod search CKYTool 就会发现0.0.2版本了。

七,删除和添加 Spec Repo

1, 删除一个私有的 Spec Repo:

pod repo remove CKYTool

2,添加

pod repo add CKYTool git@github.com:Cuidawang/CKYTool.git

如果我们要删除私有Spec Repo下的某一个podspec怎么操作呢,此时无需借助Cocoapods,只需要cd到~/.cocoapods/repos/WTSpecs目录下,删掉库目录

八,参考资料

http://blog.wtlucky.com/blog/2015/02/26/create-private-podspec/

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

推荐阅读更多精彩内容