Cocoapods公共库的创建和使用

一、 本地新建一个索引库,并上传到远程仓库上

首先上git新建一个索引库


注意上图中红色箭头所指向的地方要勾选上,不然后面推送索引库有可能报以下错误


克隆到本地后执行 pod repo add[索引库名称][索引库地址],如下

pod repo add SCICategory0 https://github.com/XXXXX/SCICategory0.git

这时候 进入 ~/.cocoapods/repos 中就可以看到与远程仓库关联的本地索引库


这时候一个私有的索引库就创建完毕。


二、利用Cocoapods命令创建子模块,把业务代码搬到子项目上,把子项目上传到远程仓库取

在GitHub上新建一个子模块SCICategory0(注意:一定要同名,不然后面会很麻烦)

利用Cocoapods官方命令 pod lib create [模块名称] 创建子模块

pod lib create SCICategory0    

这时候会问你几个问题:

1.What platformdoyou want touse?[iOS/macOS]//将模块应用到什么平台上

2.What languagedoyou want touse?[Swift/ObjC]// 模块的开发语言

3.Would you like to include a demo applicationwithyour library?[Yes/No]//是否生成demo应用,这里建议生成,因为你可以在这里进行测试

4.Which testing frameworks will youuse?[Specta/Kiwi/None]//是否集成测试框架

5.Would you like todo view based testing?[Yes/No]6.What is your class prefix?//开发前缀 

执行完毕会自动打开一个Xcode工程,生成以下文件:


这时候把我们将自己的代码的类放到Classes文件夹,删掉其中的ReplaceMe.m文件,保证项目运行成功。


cd到Example工程里面pod install后,就可以进行开发测试了。

开发完成后,我们需要查看SFCommonKit.podspec这个文件了,文件内容如下

# # Be sure to run `pod lib lint SCICategory0.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 https://guides.cocoapods.org/syntax/podspec.html # Pod::Spec.new do |s| s.name = 'SCICategory0' s.version = '0.1.0' s.summary = 'A short description of SCICategory0.' # 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/lujunjing/SCICategory0' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'lujunjing' => '370634018@qq.com' } s.source = { :git => 'https://github.com/lujunjing/SCICategory0.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '8.0' s.source_files = 'SCICategory0/Classes/**/*' # s.resource_bundles = { # 'SCICategory0' => ['SCICategory0/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3' end

其中,下面几个内容需要注意的

s.name 模块名称,将来pod install的名称是依据这个来的

s.version 模块版本,将来pod install的版本是依据这个来的

s.homepage 模块的主页

s.source 模块的远程仓库地址

s.frameworks 引用的系统库,如果用了静态库 ,验证的时候需要加--use-libraries

s.dependency 引用的第三方,如有多个,可以重复声明


三、检查完podspec确认无误后,cd到根目录文件,就可以就可以上传到远程仓库上了

1、git add .

2、git commit -m "初始化"

3、git remote add origin [远程仓库地址]

4、git push --set-upstream origin master

注明:

(1)、第4步通常不管用。

(2)、README.md文件是库说明文件,记录说明库功能、更新内容等。

(3)、github库上的README.md是新建库是必须勾选的,本地的README.md是新建项目是默认的(强行删除的话,工程运行崩溃),所以git push前需要git pull把远端仓库代码拉下来,解决冲突、合并文件,否则会报错。但是网上各种教程均无效。

(4)、目前只找到一种方法,git push -u origin master -f (因为 github 上的版本和本地版本会产生冲突,可以加上 -f 参数强制提交:)


这时候刷新github,发现库已经更新:


上传成功后需要加tag标志,注意一下这个tag标志需要与上面说到的s.version里面的版本号保持一致

5、git tag 0.1.0(版本号必须与.podspec中记录的保持一致)

6、git push --tags

四、发布到cocoapods 上进行托管

1、验证podspec文件,使用 pod spec lint 或 pod lib lint 验证podspec 文件 如果出现warn获告,则在命令行后加--allow-warnings来忽略所有警告即可, 如: pod spec lint --allow-warnings

pod lib lint SCICategory0.podspec --allow-warnings

等待一段时间,如果返回信息是 passed validation. 表示验证通过。如下:


2、发布 输入 pod trunk push --allow-warnings命令来发布到cocoapods上


(创建Pod账号 通过终端指令来操作: pod trunk registerxxx@live.cn'username' -verbose 可以使用 pod trunk me 来查看自己的账号信息,如果没有账号的话需要先注册一下—)

3、使用pod search 搜索自己的库 直接在终端输入 pod search XXX 如果搜不到可能是发布到pod远程库成功了,但是本地库没更新导致的,所以用了pod repo update 更新本地库 然后用 pod search XXX --simple 再次搜索 (注:--simple是只搜索库名字)


使用方法:

1、Podfile文件中pod 'SCICategory0'

2、pod install

3、如果出现以下报错,说明说本机的本地库太老了。。你要更新一下子:pod repo update,实际是本地 更新整个.cocoapods下的所有库


4、更新完后,再pod install。

搞定

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