#本文供刚接触代码库且浏览了其他文章依然摸不着头脑的同事,借鉴;请代码库老司机指点#
最近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文件如下图
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加载不到
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
六:使用注意
接触时间比较短,自己还是处在搭建基本库的程度,其他更多的技能,可以在上面两个连接中习得,像私有库中依赖其他第三方库,私有库中存在xib格式的文件,图片音频,划分子库等
文中有错误理解感谢在评论中给与鞭策;搭建过程中遇到错误提示评论打上,经常逛简书,会及时提供我的帮助