组件:制作Cocoapods的仓库

制作Pod的远程仓库

步骤主要有一下:

  • 1、创建.podspec
  • 2、编辑.podspec
  • 3、将项目打成tag
  • 4、验证
  • 5、注册Trunk
  • 6、发布

创建podspec

创建.podspec的前提是需要确定需要创建在哪里,这个肯定是直接创建在本地的git仓库咯。所以需要先整个本地仓库,这边是demo就从github克隆了个远程仓库至本地。
创建.podspec文件

cd 需要放置的文件夹路径
pod spec create name.podspec

这边的name是框架的名称。

编辑.podspec

创建完成后可以用终端直接编辑podspec,当然也可以用文本编辑器来编辑,具体的看自己喜欢。
主要需要编辑的内容如下,其余有需要的也可以编辑,podspec每一个编辑都有给了个例子以及介绍,这边就简单的复述并说明一下需要注意的问题。

Pod::Spec.new do |s|
s.name         = "PodLibRespository"
s.version      = "0.0.4"
s.summary      = "my test Pod Respository"
s.description  = <<-DESC
这是详细的Pod仓库描述。这边内容需要长一些不然会有警告,也可以在验证的时候设置设置忽略警告。
                 DESC
s.homepage     = "https://github.com/DaverZhou/PodLibRepository"
s.license      = { :type => "MIT", :file => "LICENSE" }
s.author       = { "daverzhou" => "daverzhou@163.com" }
s.platform     = :ios, "9.0"
s.source       = { :git => "https://github.com/DaverZhou/PodLibRepository.git", :tag => "#{s.version}" }
s.source_files = "PodLibClass", "PodLibClass/**/*.{h,m}"
s.requires_arc = true

简单的只需要这些设置,别的有需要也可以设置,单单以上设置就可以发布成功,因为这边是demo就没有一一去设置了。讲解一下上面的需要填写的内容以及可能会碰到的坑。

  • s.name:库的名称,pod search搜索的关键词,这里一定要和.podspec的名称一样,否则报错。
  • s.version:版本号,需要与你需要打的tag的版本号对应,不然会出现找不到之类的问题
  • s.summary:库的概述或者说简介。
  • s.description:库的详述,这个说明最好是比summary不然后续验证的时候会有警告,当然可以直接设置忽略警告。
  • s.homepage:项目主页地址。
  • s.license:许可证,选择MIT类型的证书,这个证书有两种方式获取:可以通过终端创建一个文件然后编辑将证书的内容复制进去(后续会给模板);另一种方式是在创建github仓库的时候选择MIT许可证,这个的好处是不需要再另外编辑可以直接用。
  • s.author:项目的作者
  • s.social_media_url:社交网址,如果你写Twitter的话,你的podspec发布成功后会@你
  • s.platform:支持的系统以及系统版本
  • s.source:项目的地址
  • s.source_files:需要包含的源文件
  • s.requires_arc:是否支持ARC
  • s.dependency:依赖库,不能依赖未发布的库,支持多个依赖库
    这边就大概介绍这些,另外需要的可以直接看.podspec里面的说明。下面附上许可证的模板,需要的可以直接复制:
MIT License

Copyright (c) 2019 DaverZhou

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

注意:复制后直接修改下Copyright (c) 2019 DaverZhou就可以直接用了。

将项目打成tag

完成以上的操作后就可以将项目打成tag并推送到远程仓库了。具体如下命令:

# 提交修改
git add -A && git commit -m "commit somme"
# 设置tag
git tag '0.0.1'
git push --tags
git push

完成上面的操作后就将版本打上了tag,并push到远程的当前分支上。如果对于git命令操作有疑问的话可以看我另外的一篇关于git命令的整理。
注意这边的tag版本号需要与.podspec上的版本号一致,否则会报错。

验证

完成了上面的操作可以开始验证下是否有问题,如果有问题按提示的修改:

pod spec lint

或者用以下的命令也行,--verbose可输入详细的debug的过程:

pod spec lint xxx.podspec --verbose

这边验证的时候如果存在警告会无法通过验证但是可以使用修饰符--allow-warnings设置忽略警告,通过验证后有一行绿色字体提示xxx.podspec passed validation

问题

下面是我在验证的时候碰到的一个问题:

- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a `ios` simulator (valid values: com.apple.coresimulator.simruntime.ios-12-2, com.apple.coresimulator.simruntime.watchos-5-2). Ensure that Xcode -> Window -> Devices has at least one `ios` simulator listed or otherwise add one.
/Library/Ruby/Gems/2.3.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb:106:in `usable_simulators'

对于这个问题,只需要更新下pod就可以了,操作如下:

确认源

需要先确认下源是否为https://gems.ruby-china.com/

gem sources -l
# 如果不是切换下源,移除原本的源
# gem sources --remove https://源url
# 替换新的源
# gem sources -a https://gems.ruby-china.com/
更新

开始更新cocoapods

sudo gem install cocoapods
pod setup

由于我这边的环境问题,直接用上面的命令会提示无权限只好改成一下的命令:

sudo gem install -n /usr/local/bin cocoapods
pod setup

注册Trunk

这边最好确认下pod的版本不可能会失败,在上一步验证的时候应该有处理过了pod的版本,这边就稍微提一下。

注册信息

查询下自己是否已经有注册信息,如果有的话 直接跳过继续下一步没有的话继续往下看

pod trunk me

我的注册信息如下:

Ignoring oj-3.6.5 because its extensions are not built.  Try: gem pristine oj --version 3.6.5
Ignoring unf_ext-0.0.7.5 because its extensions are not built.  Try: gem pristine unf_ext --version 0.0.7.5
  - Name:     daverzhou
  - Email:    y997379691@163.com
  - Since:    June 10th, 20:06
  - Pods:
    - PodLibRespository
  - Sessions:
    - June 10th, 20:06 - October 18th, 02:50. IP: 27.154.225.178
注册
pod trunk register y997379691@163.com "PodLibRespository" --verbose

上面的邮箱以及库名称记得换成自己的,注册成功后cocoapods会给你上面的邮箱发送一封邮件需要你去验证下,复制下邮件内的URL打开一下就OK了。

发布

完成注册后,开始发布,如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符。

pod trunk push xxx.podspec

完成以上算是发布成功了,具体需要查看终端的输出。完成发布后,可以尝试搜索自己发布的库了,看能否搜索到如果能搜索到就OK了。有可能出现搜索不到,但是自己又是发布成功那可能是因为cocoapods存在索引缓存,下面附上解决办法。

搜索失败

发布完成后,验证是否可以搜索到,可能出现以下情况

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

删除search_index.json索引文件

rm ~/Library/Caches/CocoaPods/search_index.json

重新搜索

pod search 第三方库名

参考资料
制作自己cocoapods库
3分钟让你的框架支持
[iOS]最详细的CocoaPods私有pod创建教程
cocoapods官方文档

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