iOS 我的组件化日记 part3:演习

首先声明我对pod的应用在实践组件化以前,停留在写个Podfile的水平上.所以如果你对pod的使用炉火纯青,这篇就不用看了.

1.如何创建私有 CocoaPods 仓库

先看下CocoaPods公有库:
打开隐藏目录
进入目录:

/Users/[yourUserName]/.cocoapods/repos

可以看到repos有一个master目录,这也就是公有库的所在.
同一份CocoaPods的代码(如何制作自己的CocoaPods后面说)即可以提交到公有库,也可以提交到你自己建的私有库内.不同就在于提交到公有库,所有人可以应用你的代码,提交到私有库当然就是你自己用咯.

下面开始建私有库github(git建私有项目是收钱的,所以你任性你上...),码云,码市都可以.

  • step1:
git_specs_create.JPG
  • step2:

进入目录:

/Users/[yourUserName]/.cocoapods/repos

clone下来.

  • step3:

执行命令:

pod repo add [YOUR_REPO_NAME] [YOUR_SOURCE_URL]

比如我就是:

pod repo add PGSpecs https://git.oschina.net/pogongzhang/PGSpecs.git
加私有库完成.png

2.制作自己的CocoaPods

  • step1:建项-->clone


    git_code_create.jpg

clone后得到:


after_clone.png
  • step2:添加你的工程
    将你要贡献出来的代码(.h+.m+.swift...)与资源(.xib+.storyboard+.png....)放在特定的目录下.方便后面写podspec文件时可以对应指定目录下的东西.
    add_project_outside.png
add_project_inside.png
当然文件路径不一定非要这么写,只要文件路径你能描述清楚都可以.
  • step3:添加podspec文件


    add_podspec.png

    podspec文件是绝对难点,podspec文件主要描述:

你写就的pod包含的代码+资源在哪?
你写就的pod现在是什么版本?
你写就的pod要依赖什么系统库?
你写就的pod要依赖什么加入的库?
你写就的pod要依赖什么其他pod?
作者的个人消息
等等

以上问题下面会一一解答,以下是样板(东西很多慢慢看,不看仔细,写的时候一定会有各种问题,我深有体会):

Pod::Spec.new do |s|
s.name         = "PGBaseComponent"                #名称
s.version      = "0.0.1"              #版本号
s.summary      = "zc PGBaseComponent summary"     #简短介绍
s.description  = "zc PGBaseComponent description"

s.homepage     = "http://git.oschina.net/pogongzhang/PGBaseComponent"
s.license      = "MIT"                #开源协议
s.author             = { "pogong" => "564917199@qq.com" }

s.source       = { :git => "https://git.oschina.net/pogongzhang/PGBaseComponent.git", :tag => "0.0.1" }  #tag与版本号要保持一致

s.platform     = :ios, "8.0"          #支持的平台及版本,这里我们呢用swift,直接上9.0
s.requires_arc = true                 #是否使用ARC
s.module_name = 'PGBaseComponent'             #模块名称

#难点1:描述你的代码+资源在哪里.特别注意xib虽然在你的工程中与代码放在一起但写描述的时候要写在s.resources内
s.source_files  = "PGBaseComponentDemo/PGBaseComponentDemo/Contribute/code/*.{h,m}"
s.resources  = "PGBaseComponentDemo/PGBaseComponentDemo/Contribute/code/*.xib","PGBaseComponentDemo/PGBaseComponentDemo/Contribute/resources/*.png"

#难点2:在工程引入什么了系统库这里都要全写出来.特别注意像引入了libz.tbtd,这里写个'z'就可以了
s.frameworks = 'UIKit', 'Foundation'  #所需的系统的framework,多个用逗号隔开
#s.libraries = 'z'     #所需的系统的lib,多个用逗号隔开
#^(本文的所展示的工程不需要这个,只是为了说注意点而已,所以是注释掉的)

#难点3:有的时候我们需要自己在工程内拽入一些framework+lib
#s.vendored_frameworks = 'PGBaseComponentDemo/PGBaseComponentDemo/Contribute/SDK/*.framework'    #工程自带的framework,多个用逗号隔开
#^(本文的所展示的工程不需要这个,只是为了说注意点而已,所以是注释掉的)
#s.vendored_libraries = 'PGBaseComponentDemo/PGBaseComponentDemo/Contribute/SDK/libWeChatSDK.a'    #工程自带的lib,多个用逗号隔开
#^(本文的所展示的工程不需要这个,只是为了说注意点而已,所以是注释掉的)

#难点4:有的时候我们上传的工程已经不是一个project,而是一个写了podFile的workspace.那么我们用到的pod也要在这写出来
#s.dependency  'Masonry'
#s.dependency  'AFNetworking'
#s.dependency  'SVProgressHUD'
#^(本文的所展示的工程不需要这个,只是为了说注意点而已,所以是注释掉的)

end
  • step4:收尾
cd到指定目录:
PGBaseComponent
    └── README.md
    └── LICENSE
    └── PGBaseComponentDemo
    └── PGBaseComponent.podspec
step4.1:校验
执行命令:
pod lib lint --allow-warnings --verbose
成功标准:命令行打印==>PGBaseComponent passed validation.
温馨提示:这一步报错概率特别大.出错了,一般都是podspec文件描述的与工程的信息不符合,看看报错信息,改掉再校验

step4.2:push code
git status
git add .
git commit 
git push origin master

step4.3:打tag
git tag 0.0.1
git push --tags

step4.4:加入仓库
pod repo push PGSpecs PGBaseComponent.podspec  --allow-warnings --verbose

现在你可以去自己的私有库内看看是不是有一个你建的pod了.

私有库加入第一个私有pod完成.png

1.step4.4:是加入私有库的命令.提交给cocopods官方做开源项目与建私有pod的过程有一点点不一样,本文就不详细介绍了.有兴趣的同学清戳==>Cocoapods系列教程(二)——开源主义接班人
2.step4.1:校验,因为现在提交的代码比较简单所以命令行也非常简单.到了真正用pod实现组件化的时候会有更复杂的命令(下一篇会细说).

4.用私有pod,podFile有一点不一样

私有仓库写就
私有仓库加入了私有的pod
现在该用用这个私有的pod了

写个项目试试:
加入Podfile,Podfile内容如下:

platform:ios,8.0
target 'TestPrivatePodDemo' do
 #use_frameworks!

pod 'PGBaseComponent', '~> 0.0.1'

end

执行:

pod install --verbose --no-repo-update

报错:

[!] Unable to find a specification for `PGBaseComponent (~> 0.0.1)`

找不到,😢

那是因为默认都是去公有库里面找的.用到私有库内的私有的pod,podFile还要加点东西.
Podfile改成如下:

source 'https://github.com/CocoaPods/Specs.git'        #官方仓库地址
source 'https://git.oschina.net/pogongzhang/PGSpecs.git'       #私有仓库地址

platform:ios,8.0
target 'TestPrivatePodDemo' do
 #use_frameworks!

pod 'PGBaseComponent', '~> 0.0.1'

end

再跑一遍pod install --verbose --no-repo-update,成功.

使用私有pod成功.png

打开workspace,注意看私有pod被引入后的资源文件的路径.

多了个Resources文件夹.
不仅图片在里面,xib也在里面.

这都是为了后面pod贡献资源的应用.

私有pod被引入后的资源文件的路径.png

到目前为止,[建私有pod仓库==>私有pod仓库加入私有pod==>用私有pod]全部完成.但正如本文的标题==>演习,会这些距离pod实现组件化还有一段距离.真刀真枪请看下一篇.


文章参考:
如何创建私有 CocoaPods 仓库
制作 CocoaPods 依赖库
Cocoapods系列教程(二)——开源主义接班人

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

推荐阅读更多精彩内容