iOS开发-- 创建pod私有库

开个篇

作为一个iOS开发者对于Cocoapods都不陌生,在这里简单介绍一下Cocoapods。

Cocoapods一个非常好用的三方管理工具,使用一个名为Podfile的文本文件管理项目中引用到的三方库,解析库之间的依赖关系,获取源代码,然后在Xcode工作区中将其链接在一起构建项目。如果想深入了解Cocoapods点击传送门

根据上面的介绍我们知道Cocoapods作为iOS开发的三方管理器非常便利,那么我们怎么创建一个属于自己的工具类,怎么让它也支持pod集成进而让自己在其他项目中也可以便利的使用尼?

最近项目不太忙,自己尝试了一下在这跟大家分享一下也是记录一下自己的尝试过程,备忘。。。

创建过程

1.创建私有Spec Repo

Spec Repo 是所有的Pods的一个索引,是所有公开的Pods 的podspec 文件的一个仓库,其实就是一个部署在服务器的Git仓库,当你使用CocoaPods 后它会被Clone到本地的 ~/.cocoapods/repos 目录下。

1.在coding.net创建一个MySpecs的项目

2.添加你的私有Repo到你的CocoaPods

$pod repo add MySpecs https://git.coding.net/***/MySpecs.git

成功后会在~/.cocoapods/repos目录下就能看到MySpecs了,至此,第一步创建私有

Spec Repo就完成了。

2.创建Pod项目

1.在coding.net创建一个MyLib的项目

2.使用Cocopods提供的Using Pod Lib Create创建一个项目

cd到你要创建项目的文件夹下运行命令

$pod lib create MyLib

接着终端会向你提出几个问题根据自己的需求回答即可

成功后会在目录中创建好一个MyLib工程。

3.添加实现代码

在MyLib的Classes文件夹下添加自己想要存放的代码

4.开发模式下测试pod库的代码

打开MyLib项目中的Example文件夹编辑Podfile文件:

pod 'MyLib', :path => '../' # 指定路径

#pod 'MyLib', :podspec => '../MyLib.podspec'  # 指定podspec文件

5.提交Pod库到MyLib仓库

cd进入MyLib项目根目录然后,执行以下命令:

$ git add .

$ git commit -s -m "初始化MyLib 库"

$ git remote add origin git@git.coding.net:***/MyLib.git          #添加远端仓库

$ git push origin master    #提交到远端仓库

$ git tag -m "first release" "0.1.0" #打上标签,这个很重要

$ git push --tags    #推送tag到远端仓库

推送成功后Pod项目构建完成

同学们注意划重点了啊!(敲黑板)

3.最重要的一步构建podspec文件并提交到私有Spec Repo仓库

1.配置MyLibPod库的pod spec 文件

#

# Be sure to run `pod lib lint YunUeLib.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            = 'MyLib'

#版本号

s.version          = '1.0.0'

#简介

s.summary          = '个人私有库.'

# 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://coding.net/u/***/p/MyLib/git'

# s.screenshots    = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'

#开源协议

s.license          = { :type => 'MIT', :file => 'LICENSE' }

#作者

s.author          = { 'mr_six666' => 'a15042004750@sina.com' }

#项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS。

s.source          = { :git => 'https://git.coding.net/***/MyLib.git', :tag => '1.0.0' }

# s.social_media_url = 'https://weibo.com/Mr_Six666666'

#支持的平台及版本

s.ios.deployment_target = '8.0'

#代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则

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

#资源文件地址

# s.resource_bundles = {

#  'YunUeLib' => ['MyLib/Assets/*.png']

# }

#公开头文件地址

# s.public_header_files = 'Pod/Classes/**/*.h'

#所需的framework,多个用逗号隔开

# s.frameworks = 'UIKit', 'MapKit'

#依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency

# s.dependency 'AFNetworking', '~> 2.3'

end

更多配置请参考:官方文档

2.编辑完文件后,验证一下这个文件是否可用

cd到MyLib项目根目录,运行命令:

$ pod lib lint

当你看到终端输出:

-> MyLib (0.1.0)

MyLib passed validation.

表示验证通过,是一个符合CocoaPods规则的配置文件。

3.本地测试MyLib.podspec

打开MyLib项目中的Example文件夹编辑Podfile文件:

#pod 'MyLib', :path => '../' # 指定路径

pod 'MyLib', :podspec => '../MyLib.podspec'  # 指定podspec文件

cd到Example工程目录下运行命令:

pod update

打开Example项目工程,现在可以看到库文件都被加载到Pods子项目中了。

4.向Spec Repo提交pod spec

测试库文件没有问题我们就把MyLib.podspec提交到远程Spec Repo仓库中,就是本文开头说的MySpecs仓库

cd到MyLib项目根目录,运行命令

$ pod repo push MySpecs MyLib.podspec

提交成功后,这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/MySpecs目录下查看。在远端仓库MySpecs仓库中也有了一次提交。

至此,我们的私有库已经构建完成,使用pod search命令就可以查到我们自己的库了.

运行命令 pod search MyLib

-> MyLib (0.1.0)

这个是我的私有库项目Demo.

pod 'MyLib', '~> 0.1.0'

- Homepage: *****

- Source: *******

- Versions: 0.1.0 [MySpecs repo]

四、使用制作好的Pod

在正式项目的Podfile 里添加

pod "MyLib", :git => 'https://git.coding.net/Reborn96/YunUeLib.git'

然后执行命令

pod update

然后打开项目可以看到,我们自己的库文件已经出现在Pods子项目中的Pods子目录下了。

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

推荐阅读更多精彩内容