[用Cocoapods并结合Github管理,导入,更新,下载自己的SDK]

💖由来:你有自己的SDK可供人下载使用,通过Github,你虽然可以实现Github上的上传与管理(可见文章:[用github上传并管理自己的项目]),然而现在你想将该SDK上传给cocoapods以供别人pod导入,更新和使用.

<一>准备工作:

确保你的客户端安装有Github桌面版并登录,在网页登录上你的Github账号. 并准备好你需要上传的SDK文件内容.打开终端以备开始.

<二>详细过程:

1.0  SDK的创建目的,就是满足别人的需求,以帮助他人或者自己在开发项目时可以通过有效的第三方来更好更快的完善,开发项目.所以,在完成核心代码的编写后,按照比较的合理的操作方式,你有必要写一份用来展示自己SDK核心,主要作用的Demo,以帮助他人更好的认识,学习它.所以,如果此时你已经完成了这个步骤,那么,此时的Demo文件的框架结构应该是下图所示的:

创建Demo

2.0  可以暂时把文件放起,进入真正的创建Github代码仓库并关联Cocoapods的阶段.其初期的过程更是对[用github上传并管理自己的项目]的重复.进入Github个人主页,点击Repositories然后点击New进入仓库创建界面:

进入仓库编辑界面

3.0  根据下图详细提示,对仓库进行编写,在这里注意一点->※为了方便,也是规范整体结构,你要保证这里的 Repository name 要和后面的 .podspec 文件里的文件名,还有你的核心文件的文件名相一致:

编辑仓库

4.0  仓库创建成功的初始模样就如下图所示,然后点击右上方 Clone or download 下的Open in Desktop 将整个仓库下载到Github桌面版并打开:

初始状态

5.0  下图所示下载到桌面并打开后的大体模样,直到目前为止,你已经有了两个文件,1️⃣你之前所放起的Demo文件;2️⃣你新创建并下载,而且将会是最终提交的文件YourSDK.接下来,你就需要将两个文件合并,实际上就是需要将Demo文件的主题部分手动拖动到新的 YourSDK 文件中就可以:

下载到桌面并打开

6.0  具体合并过程可见下图,在这里有个要点需要作出特别说明->在原Demo文件中,核心文件夹名为 YourSDKFiles ,在拖动到YourSDK文件夹时,我将其更改为同名文件 YourSDK ,那么问题来了,在Demo里面的 YourSDKFiles 还是存在的,但是里面的东西却不能显示了,所以在这里,需要重新打开Demo文件,并重新导入一遍核心文件  YourSDK .

合二为一

7.0  一切准备妥当,接下来,就需要将新的 YourSDK 上传并异步更新到Github上去,在未提交界面,请注意一点->必须写入 Summary 或者 Description 两者中的任意一项,点击 commit 完成后,在点击 Sync 异步更新:

提交并更新

8.0  提交完成后,回到网页界面并刷新,获取到最新的仓库模样,即如下图所示:

刷新页面

9.0  其实,以上几个步骤就是我在上一节所说的用 Github 上传并管理自己项目的步骤,那么,接下来的步骤就是真正让你的仓库与Cocoapods关联的关键所在.

首先,将一点核心的文件,那就是一个叫 .podspec 的文件,通过下图的比对,一个仓库能不能实现与Cocoapods的关联,关键之处就在于一个属于该仓库的 .podspec 文件;

所以,接下来的所有操作基本就是围绕 .podspec 文件来进行的了:

发现核心

10.0  先来自己辨识下这个文件,直接点击打开别人已经完成的 .podspec 文件(我点开的是MJ大神MJRefresh框架里podspec文件),看一下里面的秘密.

注意->1️⃣直接看里面的内容即可,第一行中的东西每个podspec文件并无差异, 往下看, s.name ,这个就是上面我所说的要与 Repository name 保持一致的SDK名.

注意->2️⃣在接下来的操作中,我将会直接拷贝别人的podspec文件,并根据自己的内容进行合理修改.但是,通过终端,你也可以通过指令进行创建:

pod spec create YourSDK.podspec

并用一下指令对其进行修改等操作,之后将会提到:

vi  YourSDK.podspec


认识pod spec

11.0  保持podspec与整体文件和核心文件的命名一致, 在终端中 cd 该文件,找到后 进行如下操作,进入到podspec文件里:

vi  YourSDK.podspec


创建podspec

12.0  进入到主podspec界面后,如下图,点击键盘上的 i (insert) 就可以开始对其进行删除或者输入的操作.命名,版本号,摘要,描述,网页地址,证书,平台,作者信息,源地址,资源文件,arc的选择等等.依次根据实际情况依次修改填写.

注意->如果在终端创建,会有更多的可供选项,内容更多,很多东西对我们正在希望得到的作用并无太多帮助,尽量将其简化即可.

在修改完成并确认无误后,点击 Esc 键,然后输入 :w 保存, :q 退出:

编辑podspec

13.0   在完成保存并退出后,首先要做的就是打标签,将 tag push 到Github上.通过以下四步即可:

git tag '0.0.1'

git add *

git commit -m 'add tag'

git push origin 0.0.1


打上标签

14.0  接下来,在创建完善podspec并给Github打完标签后,就可以把该仓库作为分支推送给Cocoapods.

有以下操作->1️⃣对打上的标签与podspec标记的标签进行比验证,通过以下指令进行:

pod lib lint

如果成功,会返回一句如下结构的信息:

-> YourSDK (0.0.1)

2️⃣执行下图中 pod trunk push 命令,真正执行分支的推送操作.当显示 has been pushed 时,即证明推送成功.

3️⃣返回到网页界面,刷新该仓库.点击 Brand:master ,再找到 Tags 并点击,就会发现你所打的标签号.


推送分支

15.0  返回到终端,在终端里执行如下指令

pod search YourSDK

如下图,即证明,此时你已经成功关联你的SDK到Cocoapods.

搜索可见

<三>常见错误:

在这个操作中,其实有一些坑的,而且,这些坑都比较集中的出现在执行 pod trunk push 也就是推送分支的过程中.接下来,我将我所遇到的一些常见坑给大家填一下,有不周之处,望各位指正.

1.0  错误1️⃣:核心文件没有正确匹配

- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

       解决1️⃣:手动导入

手动导入文件

2.0  错误2️⃣:由于警告,未通过认证

YourSDK did not pass validation ,due to 1 wanrings (but you can use --allow-warnings to ignore them)

       解决2️⃣:重新执行下面指令

pod trunk push YourSDK.podspec  --allow-warnings



<四>补充:

整个过程其实还是比较容易理解的,就是将Github上的东西拿一份给Cocoapods托管,重点和难点就是在建立连接的部分.不过,这个过程的顺利进行,需要你对Github上的文件结构有充分的认识,还需要较为熟练的使用Github桌面版(Github Desktop).

同时,还有一点必须说明,这个过程在Cocoapods亦或者Github,还有终端的操作上,所用到的东西其实十分有限的,需要平时的积累,观察与总结.

如果能十分有谱的使用某一管理工具对自己的工作成果或者学习成果,进行有效的管理,引导的话,这对你之后的工作和学习都是大有裨益的,很多操作中将会起到事半功倍的效果.

诸君共勉!

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

推荐阅读更多精彩内容