POD生成本地库,远程公共库和远程私有库总结

#本文供刚接触代码库且浏览了其他文章依然摸不着头脑的同事,借鉴;请代码库老司机指点#

最近3天接触建立自己代码库,网络上看了很多优秀的文章本地库/远程公共库/远程私有库  ,  远程私有库 , 本地库/远程私有库 ,使我对库的认识理解有了巨大巨大的提升,自我的升华.这些文章本身已经非常详细具体,但对于我,在阅读实践的过程中遇到了层出不穷的坑,欲报无门的感受让我记忆深刻.另一方面初步掌握新知识时,总结记录是从小到大教育过我的老师们千叮万嘱的事情.所以尝试写下这篇笔记.

相信我是站在第一次接触代码库的角度来写这篇文章的,现在我陪你一起认识,搭建自己的代码库.

目录:

一:代码库 用途 :

二:使用工具 : CocoPods /GitHub/SourceTree

三:本地库搭建

四:远程公共库搭建

五:远程私有库搭建

干货线


一:代码库 用途 :

1.功能代码抽离复用,追求一劳永逸,即使用的第三方库,如AFNNetwork;我们可以建立功能性代码的基础上,实现组件化架构;也是走上大神之路,在gitHub上分享自己的开源库,达到上万星成就的第一步(又说出了我的梦想)

2.新项目建项时大多需要的Base代码集合,一步引入

 二:使用工具 : CocoPods /GitHub/SourceTree

cocopods,github:既然你已经接触私有库了,这两个工具就默认你是熟悉的;如果不的话,按command+w,再见

sourceTree:上面提供的三个文档链接中都是使用终端操作的,因为公司用sourceTree习惯了,所以用了sourceTree软件,如果你不熟悉使用,通过终端操作是一样的,都不复杂.

三:本地库-搭建

本地库是最简单的,只需要新建一个podspec格式的文件,准确完善文件中的描述信息(填写格式很重要)

podspec:cocopod本地库的说明书,内容是由你来填写,很简单的就会出现很多坑

1.终端cd你想存放本地库的文件夹

2.输入 : pod spec create <本地库名字>

3.会生成一个模板podspec文件如下图

podspec文件

5.根据以下内容完善你的podspec文件,大部分#注释的暂时不需要,以下内容是必填的


s.version = 0.0.1

s.summary = "简单描述"

s.description = <<-DESC

详细描述,长度要大于简单描述,要另起一行写在-DESC和DESC中间

DESC

s.homepage = "主页,本地库用不到,可以个性发挥"

s.license = s.license      = { :type => "MIT", :file => "FILE_LICENSE" } # 开放协议根据自己的需要填写  一般可以填写MIT,第二个参数指定加载文件的名字

s.autor = { "名字" => "邮箱" }

s.platform = "支持平台和版本"

s.soure = { :git =>"托管git代码仓库地址,本地库填写本地库文件夹的地址如:/Users/Master/Documents/第三方库/Example1", :tag => s.version }#注意格式s.version

s.souce_files = "soure中关键代码的路径"


最重要的是souce_files 字段 一定要  一定要 一定要清晰准确  其中当前是podspec文件所在层级,填写源代码所在的路径;例如Classes/**/*.{h,m},**是通配符,而且会一层一层的向下匹配,.{h,m}是指定匹配.h/.m文件,此处注意的是 如果存在xib格式的文件,则必须指定h./m.类型,不然加载xib会出错,xib和图片等资源型文件应通过s.resource_bundles字段指定.

6.创建license文件,文件名为 FILE_LICENSE (与podspec中设置的对应即可);文件格式为文稿;内容都一样,只需要将划线的地方改为你个人的信息

MIT License

Copyright (c) 2017 zhenghaonagehao

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

7.在本地库文件夹中新建名为:Classes的文件夹,存放源码文件,不然pod加载不到


Classed的文件夹中存放源码

8.对本地库进行git管理

cd 到本地库,一次执行下列命令

git init 

git add .

 git commit -m'initial'

git tag 0.0.1

git push 

9.使用终端检测,输入 pod spec lint 

如果存在错误如下图,根据提示进行调整,

错误提示

常出错误:

1, Could not find remote branch 0.0.1 to clone. 这个问题大多是tag值打的不对,因为pod是根据git的tag值进行加载的;如果修改了本地库中源码的内容,不需要对使用本地库的项目进行pod install;但如果是添加/删除了文件,则需要对使用本地库项目进行pod install


10.创建使用本地库的项目,pod file中如下格式设置,重要的是一定要设置为use_frameworks!

pod 'localResp' , :path => '../本地库'  (../ :表示从当前podfile的层级返回上一级;也可以设置为绝对路径)


11.运行xcworkspace就可以看到pods中出现了本地库中classes文件夹中的源码

如果在使用本地库的项目中引用不到本地库中的文件,设置buildSetting中header search path,添加一个路径为本地库的绝对路径,设置为recurive

四:远程公共库-搭建

1.可以通过快速创建lib的方式,同样,私有本地库也可以通过这个方式创建

pod lib create yourLibName

回答四个问题


使用英文做你的lib名称,会自动填写好部分文件的名称.

2.在github上或者码云上或者其他代码托管平台新建一个空的库


空的仓库

3.将github上仓库的地址设置在podspec的s.source中,完善其他信息;将源码文件放入publicLib文件夹的classes中;同时修改s.homepage


4.终端cd到publicLib,依次执行

git init

git add .

 git commit -m'initial'

git remote add master github地址

git push --set-upstream master master

git tag 0.1.0 (版本号保持与pedspec中的一致)

git push --tags

完成后,github上的仓库为下图

5.通过lib spec lint进行验证成功后,将podspec上传到cocopod的索引库中

注册trunk,不是任何人都能推送,因为cocoapods依赖trunk服务器管理,所以需要通过trunk推送自己的podspec(cocoapods官网

命令:pod trunk register EMAIL [NAME]

[NAME]:    表示NAME可有可无

pod trunk register 58999050@qq.com yuanzheng

验证成功后,点击邮箱就好了,打开会有点慢.

推送自己的podspec到cocoapods的索引库

pod trunk push HttpManager.podspec --allow-warnings

注意:必须cd 进入到podspec目录下,才能执行这个代码

注意:podspec文件中的s.version版本号要跟最新Tag一致

注意:podspec文件中的s.source仓库地址也不能写错

测试能否索引到

pod search 自己仓库

发现索引不到,其实已经上传到cocoapods上了,只不过需要重新更新索引文件

怎么更新pod索引文件?

原理:pod setup成功后会生成~/Library/Caches/CocoaPods/search_index.json文件

把search_index.json文件文件删除,重新执行pod search,就会重新更新索引.

作者:袁峥

链接:http://www.jianshu.com/p/7b4667cde80b

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

6.现在可以在使用私有库的项目中podfile像引用其他第三方库如AFNWorking一样使用自己的公共私有库

五:远程私有库-搭建

与远程公共库相比,创建的是两个私有库

其他流程与远程公共库第5步开始不同

现在已经在github或其他平台创建好了存放源码的私有库

5.创建第二个空私有库,叫做索引库,作用是用来存放podspec这个索引文件,将自己创建的索引库添加到本地

pod repo add podSpecResp https://github.com/zhenghaonagehao/podspecResp.git,后面是索引库远程地址

通过pod respo 查看添加podSpecResp

6.同样的方式,将podspec设置好后上传到第二个私有库,打上tag值,注意,tag值必须与podspec中version的描述一致,这样就可以在使用私有库的时候进行版本控制

pod repo push podSpecResp publicLib.podspec --allow-warnings

本地和远程库里都会有podspec文件

7.将第二个私有库的地址添加到使用私有库的podfile中


# 表示先去找私有,在找公有

source 'https://github.com/zhenghaonagehao/podspecResp.git'

source 'https://github.com/CocoaPods/Specs.git'

target '测试私有索引库' do

pod 'publicLib'

pod 'AFNetworking', '~> 3.1.0'

end

六:使用注意

完善学习 继续学习 Cocoapods使用私有库中遇到的坑

接触时间比较短,自己还是处在搭建基本库的程度,其他更多的技能,可以在上面两个连接中习得,像私有库中依赖其他第三方库,私有库中存在xib格式的文件,图片音频,划分子库等

文中有错误理解感谢在评论中给与鞭策;搭建过程中遇到错误提示评论打上,经常逛简书,会及时提供我的帮助

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

推荐阅读更多精彩内容