CocoaPods创建公有Pod库方法总结


1、注册CocoaPods账户信息

想要创建一个开源pod库, 首先我们需要注册CocoaPods, 这里使用trunk方式, 作为一个iOS开发人员你一定安装了CocoaPods, 那么只需要在终端执行:

pod trunk register 邮箱地址 '用户名' --verbose

这里我们一般使用github邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功, 成功之后可以终端执行:

pod trunk me

查看自己的注册信息, 以后当你有了自己的开源Pod库, 也可以用此方式随时查看自己发布过的Pods;

2、创建共享库文件并上传到公有仓库

共享库需要三个必不可少的部分:

  • 共享文件夹(文件夹存放着你要共享的内容, 也就是其他人pod得到的文件, .podspec文件中的source_files需要指定此文件路径及文件类型);
  • LICENSE文件(默认一般选择MIT);
  • 库描述文件.podspec(本库的各项信息描述, 需要提交给CocoaPods, pod通过这个文件查找到你共享的库).

这一步分两种情况:

  • 如果你已经有了现成的想要共享的文件,你只需要满足上面三个部分,即可上传到公有仓库即可继续其他的步骤;
  • 你想要创建一个全新的工程去做自己的共享, 参考Using Pod Lib Create
a、执行终端命令:
pod lib create 库名
b、CocoaPods将立即打开您的Xcode项目; 从那里可以编辑CocoaPods生成的所有文件。
c、打开*.podspec文件,修改类库配置信息。
#
# Be sure to run `pod lib lint BLPopHandlerController.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'BLPopHandlerController'
  s.version          = '0.1.0'
  s.summary          = 'A short description of BLPopHandlerController.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/upupSue/BLPopHandlerController'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'upupSue' => '594821076@qq.com' }
  s.source           = { :git => 'https://github.com/upupSue/BLPopHandlerController.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'BLPopHandlerController/Classes/**/*'

  # s.resource_bundles = {
  #   'BLPopHandlerController' => ['BLPopHandlerController/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/BLPopHandler/BLPopHandlerController.h'
  # s.frameworks = 'UIKit','Foundation'
end

按照默认配置,类库的源文件将位于Pod/Classes文件夹下,资源文件位于Pod/Assets文件夹下,可以修改s.source_filess.resource_bundles来更换存放目录。s.public_header_files用来指定头文件的搜索位置。
s.frameworkss.libraries指定依赖的SDK中的framework和类库,需要注意,依赖项不仅要包含你自己类库的依赖,还要包括所有第三方类库的依赖。
podspec文件的详细说明可以看Podspec Syntax Reference

d、进入Example文件夹,执行pod install,让demo项目安装依赖项并更新配置。
e、添加代码,重新运行Pod install来应用更新,demo中调用测试。

Development Pods are different from normal CocoaPods in that they are symlinked files, so making edits to them will change the original files, so you can work on your library from inside Xcode. Your demo & tests will need to include references to headers using the #import <MyLib/XYZ.h> format.

f、把源代码推送到远程仓库
//进入源代码根目录
cd ~
//添加到git得暂存区
git add -A
//提交到本地仓库
git commit -m "first commit"
//添加远端仓库地址
git remote add origin https://github.com/upupSue/BLLibPopController.git
//把本地代码推送到远端仓库
git push -u origin master

3、编辑.podspec文件

修改s.source

s.source = { :git => "远端仓库地址", :tag => '0.1.0' }

检查Podspec lints是否正确。这可以通过两种方法完成,pod lib lint和pod spec lint。 它们之间的区别是,pod lib lint不访问网络,而pod spec lint会检查外部repo和关联的标签。

pod lib lint BLPopHandlerController.podspec
...
BLPopHandlerController.podspec passed validation.

4、打tag, 发布一个release版本

一切准备就绪后, 我们需要在你的git仓库里面存在一个与.podspec文件中一致的version, 这里你可以在你的git仓库中的releases一项去手动发布, 也可以在当前文件夹下使用终端命令:

git tag -m 'first release' '1.0.1'
git push --tags #推送tag到远端仓库

成功之后即可在你的releases里面看到这个tag的版本.

5、发布自己的库描述文件podspec给cocoapods

同样在这个文件夹下, 终端执行:

pod trunk push BLPopHandlerController.podspec --allow-warnings

查看是否提交成功

6、关于查找和使用新创建的库

pod search BLPopHandlerController检验是否可用

大多情况下会出现这个问题:

[!] Unable to find a pod with name, author, summary, or description matching `BLPopController`

这主要是因为在本地索引里面没有, 解决办法

  1. pod setup (不行,使用方法二)
  2. pod repo update(不行,使用方法三)
  3. 前往这个路径下~/Library/Caches/CocoaPods删除search_index.json文件 , 或者使用终端命令删除:rm ~/Library/Caches/CocoaPods/search_index.json然后重新搜索.

7、更新维护podspec

如果有错误或者需要迭代版本,修改工程文件后推送到远端仓库后, 需要修改podspec中的版本号, 并重新打tag上传, 再进行新一轮的验证和发布, 当然, 创建一个演示demo工程供其他开发者下载查看并不会影响我们的pod库.

扩展阅读

CocoaPods创建公有和私有Pod库方法总结

iOS:最详细的创建CocoaPods私有库教程

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

推荐阅读更多精彩内容