CocoaPods(repo是master) 上传自己的项目

第一步:在GitHub上面创建一个要放置代码的repository。步骤如图:

创建repository

创建完成后,会进入到如下界面:


repository创建完成

接下来就是在如上图的界面打tag,具体操作见图1~2

图1

点击图一中的release,如果没有创建过tag的话,则会出现create new release点击之后出现图二样式

图2
  • 图二1处填写的是git上的tag,这个要和后面的xxx.podspec的version 对应(网上有说要加v的,本篇教程下是不需要)
  • 图二2处是这个tag的名称
  • 图二3处是这个tag对应的描述

如果不想上github上面打tag的话,可以执行下面的语句

git tag '0.1.0'
git push --tags

这个时候就需要在本地把这个repository库clone下来,建议使用GitHub desktop软件操作。

下面介绍GitHub desktop软件的clone操作:

  • 1、打开软件GitHub desktop,然后在左上角找到file选项
  • 2、点击file选项,会弹出三个选项,选择第三个
  • 3、在弹出的选择框里就是你的GitHub上面的库,找到对应的clone就可以了

第二步实现方式一 :

  • 1、打开clone下来的文件夹(命名为A,后面的A文件夹说的就是这个文件夹)

  • 2、打开终端,cd到A文件夹,然后终端输入:
    git clone https://github.com/wode0weiyi/ConfigPublicPod.git

  • 3、终端cd到ConfigPublicPod文件夹中,然后执行脚本./config.sh
    cd ConfigPublicPod
    ./config.sh
    (执行脚本后,会让你输入一系列参数,projectName要传到pod上的文件名,httpsRepo是步骤一中创建repository库的HTTPS地址,sshRepo就是repository库的ssh地址,homePage是repository库页面的地址栏地址)

脚本执行完成后,你的项目中就有了xxx.podspec文件了,这个就是pod的配置文件,后续要传到pod上面去识别你的项目的。

在xxx.podspec文件里面,你可以修改几个地方,一个就是支持版本:
s.platform = :ios, "8.0"
一个就是author用户:
s.author={"用户名" => "GitHub账号"}
s.version = "1.0.1"这个根据自己要提交到git上的版本进行变更。这里会遇到比较多的问题。最后会把遇到的一些问题总结下。

这个时候,看文件目录:


image.png

针对第二步所说的步骤,下面介绍一个比较简单点,且目录清晰的步骤。

第二步实现方式二

  • 1、cd到A目录下面,将你要上传的文件放到A目录下面。然后创建一个xxx.podspec文件夹。终端代码:
    touch 传到pod上的文件名.podspec
    然后用xcode打开xxx.podspec文件。将下面的代码复制到文件里面:
#
#  Be sure to run `pod spec lint BLAPIManagers.podspec' to ensure this is a
#  valid spec and to remove all comments including this before submitting the spec.
#
#  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
#  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
#

Pod::Spec.new do |s|

  # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  s.name         = "WebRTCHelper"
  s.version      = "0.0.1"
  s.summary      = "WebRTCHelper."
  s.description  = <<-DESC
                    this is WebRTCHelper
                   DESC
  s.homepage     = "https://github.com/wode0weiyi/WebRTCHelper"
  s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
  s.author             = { "huzhihui" => "wonderfulhzh@163.com" }
  s.platform     = :ios, "8.0"
  s.source       = { :git => "https://github.com/wode0weiyi/WebRTCHelper.git", :tag => s.version.to_s }
  s.source_files  = "WebRTCHelper/*.{h,m}"
  s.requires_arc = true
end

对应的参数说明:

name:传入pod的文件说明
version:传入到pod上的版本,注意这里的版本一定要和git上面版本一致
summary:简单描述
description:详细描述
homepage:前面创建的repository的地址,地址栏里的地址就可
license:凭证,这个在创建repository的时候选择一下就行,见图创建repository
author:发布者的信息,前面一个为用户名,后面一个为GitHub的账号
platform:支持的版本
source:资源信息,第一个引号里面的是repository的HTTPS地址,后面是tag,不用动。
source_files:要传文件的目录
requires_arc :是否支持ARC

这里要重点注意的:

source_files:这里要注意的是这里的路径是以xxx.podspec文件为根据,同级的话,就写文件名就好(一般要传pod的最外层文件夹和xxx.podspec文件是同级的)。往后多级的,逐级加。如果多个的话,就分组加,逗号隔开。下面针对各种情况给出范例:

  • 1、同级的文件夹B里面只有.h和.m文件
    source_files = "B/*.{h,m}"
  • 2、多级文件夹B/C/D(只有最后一级文件夹里面有.h和.m文件
    source_files = "B/C/D/*.{h,m}"
    -3、多级文件夹B/C/D,每个文件夹里面都有.h和.m文件
    source_files = "B/*.{h.m}","B/C/*.{h.m}","B/C/D/*.{h.m}"
    其中C D可以用**代替

接下来就是验证xxx.podspec文件的正确性,终端cd 到xxx.podspec所在的文件夹,然后输入

pod psec lint 或者pod spec lint --allow-warnings
验证过程如果顺利的话,则会出现


podspec验证

这里验证会经常出现两个错误:

  • 错误1:file patterns: The ``source_files`` pattern did not match any file.
  • 解决方法: 先按照上面说的目录层级检查自己的目录层级,如果无误,还出现这个错误,就需要手动去对应的文件夹添加想要放到pod上面的文件了。
    (1)、打开

/Users/Library/Caches/CocoaPods/Pods/External/你要传的项目文件

如图:


image.png

(2)、我现在要放到pod上面的是WebRTCHelper文件,则删除掉图中2处的所有文件,然后在终端输入pod psec lint xxx.podsepc,当然错误还是存在;
(3)、重新验证后这个时候发现图中2处会生成一个文件夹,点开这个文件夹,在里面把你要放到pod上面的文件复制一份放到里面,(例如图中的标3的文件夹)。然后再验证,这个错误就会没有了。当然具体问题还要具体讨论,这个是一个解决方法。

  • 错误2:是git上打的版本和podspec文件里面的version不一致
  • 解决方法:首先确认下自己在git上面有没有打包,可以通过在GitHub上查看,网页上打开你在GitHub上创建的repository,点击 release查看,如果打了tag的话,就会显示出来,如图:
    image.png

podspec文件里面的version改成自己看到图中的1.0.0就可以了。

注意事项

A文件夹里面代码和xxx.podspec文件验证成功后,需要将所有的改动传到GitHub上面去,避免后面出现错误。
这个操作可以在GitHub desktop软件上操作,步骤为:

git更新

  • 1处如果A文件夹里面有数据或者文件修改,这里会展示出来,不需要操作
  • 2处是对这次代码文件提交的一个说明,必填。填好后,点击2处下面的Commit to master 按钮
  • 点击Commit to master 按钮后,完成后,点击3处的所在地方,然后等待就可以。

最后一步:验证成功后,接下来就是上传到pods。

在这之前,有一个好习惯就是验证下你现在要传到pod上面的文件名是否存在,比如我测试使用的是TestProject_2,验证方法很简单,就是pod搜索下看有没有即可

pod search TestProject_2

如果搜索到和你文件名一样的,这个时候你就要去改你的xxx.podspec文件里面的name属性了
终端输入:

pod trunk push xxx.podspec

然后等待结果就好,这个过程,网速不好的话会失败。出现:

pod失败

成功后,看到终端输出如图:


pod成功

本篇说的pods公有库上传自己的项目的方式有点复杂,后面重新介绍了另外一种方式上传,相比起来,步骤少了很多,用起来也简单,且不容易出现source_files报错问题。有兴趣的可以点击链接查看在CocoaPods公有库(repo是master)里面添加自己的项目

常见的错误请转到错误分析

这篇说的是将自己的项目开源道pods上面,如果要创建自己的私有库,利用pod怎么去管理呢?请看CocoaPods私有库管理,可以用于组件化,还会说到pod上传项目,文件层级怎么来划分。

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

推荐阅读更多精彩内容