iOS组件化开发2 · 组件开发必备知识

iOS组件化开发1 · 什么是组件化

组件化开发2 · 组件开发必备技能

这篇文章的主要内容list
1、学会使用git
2、作为使用者开发者怎样使用 CocoaPods
3、学会创建远程私有的CocoaPods库

一、git的使用

git最基本要理解并会使用下面的命令

基本操作
git init # 创建git
git status #查看状态
git add . # 放到暂存区
git commit -m '提交信息' # 提交
----
标签
git tag -a '1.1.1' -m '标签描述' # 创建标签
git push --tags # 推送全部标签
git tag -d 1.0.0 (删除本地标签)
---
远程操作
git clone gitURL
git remote add origin gitURL
git push origin master
git push origin :1.0.0 (有冒号就表示删除远程1.0.0标签)

如果你不明白或者是没有用过上面的命令,请移步到这里看更详细的git教程
git详细教程

二、CocoaPods的使用

如果不了解CocoaPods的安装和简单使用,教程请移步这里 ---> CocoaPods安装教程

  • CocoaPods是什么
    CocoaPods 是用来管理xcode项目的第三方框架的工具

  • CocoaPods的机制(很有必要了解)
    它的工作机制是通过pod search 框架名称 在索引库里进行检索,并得到要搜索框架的一个描述文件(.podspec文件)。利用该描述信息中包含的关于框架的版本信息,下载地址,依赖库等信息来下载和管理三方库

  • **让自己的开源程序支持 CocoaPods **
    通过对CocoaPods的工作机制的了解,如果想让自己框架支持 CocoaPods 的集成方法,就要为自己的框架创建描述文件,并把描述文件提交到索引库,这样别人就可以通过CocoaPods 使用自己开发的框架了。

所以说白了,让自己的的框架支持 pod ,就是为自己的框架创建一个描述文件,并同步到索引库

那···
如果不想让别人用,只想在公司内部使用呢??
别着急,慢慢往下看
···

pod--使用者

首先我们大致了解一些pod的简单使用

1、打开终端,进入项目目录
2、在终端pod init方法创建 podfile 文件( 建议不要在终端用touch podfile 方式创建 )
3、用xcode修改podfile文件

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0' # 最低支持的版本
target 'test-1-2' do # 选择制定的target
use_frameworks! # 使用framework形式导入,swift要使用这个
pod 'SDWebImage'
end

4、pod install 安装 pod 所要导入的文件

需要注意的是:
在比较低版本的 pod ,当进行 pod install 的时候。会默认先收就行 Updating local specs repositories(更新本地pod检索库)


这里稍微细化一下pod的搜索机制
1、当使用pod search 命令的时候,pod会在pod本地索引库中检索你要寻找的框架。
2、而本地的索引库是从github的pod索引库down来的。所以每次在使用pod install的时候,会从远程更新本地的索引库,这样才能保证本地索引库是最新的,检索到需要的框架
3、在pod install 可以通过后面这个命令代替,来禁止更新本地索引库 pod install --verbose --no-repo-update

5、到此,就可以在项目中欢乐的使用添加的框架了


作为使用者,pod为我们管理框架提供了很大的便利,很轻松的管理框架的更新和集成。作为开发者,让我们开发的框架支持pod,是不是也是很利国利民的一件大事呢?

pod--开发者

Hi,The Coder,让自己的库支持CocoaPods,OK?

远程共有/开源

自己的框架如果计划开源。默认的情况下,是把描述文件提交到git的cocoapods的索引库。这样其他人就可以通过pod集成你的开源框架了

步骤
1、本地编码,写好你的开源框架
2、代码上传到github的公开仓库里
3、git打标签,并将标签push到远程

git tag -a '0.1.0' -m '0.0.1' # 添加一个标签
git push --tags # 推送所有标签到远程

本地的编码完成。就需要创建 pod 必须的描述文件

4、在框架所在文件夹中,生成 podspec 描述文件

pod spec create 描述文件名字,建议和项目名字一样

5、简单修改描述文件参数(复杂的后面结合案例讲解)
用xcode打开上面创建的文件

s.name = "框架名字"
s.version = "版本号"
s.summary = "简单描述" #要比详细描述长度小
s.description "详细猫叔"  #要比简单描述长度大
s.homepage = "主页"
s.license = "MIT" # 开放协议根据自己的需要填写
s.autor = "作者"
s.platform = "支持平台和版本"
s.soure = "git代码仓库地址就可以"
s.souce_files = "soure中关键代码的路径"
s.requires_are = true # 支持ARC

具体的修改例子,可以参考AFN的podspec文件

6、修改好以后,验证spec文件是否修改正确

$ pod lib lint

这里一定要验证通过,验证过程中如果有报错或者警告,应该按照提示的信息进行修正

7、注册trunk,并通过trunk提交spec到git的cocapod索引库

# 注册trunk账号
pod trunk register Email UserName 
# 注册后,去填写的Email中验证一下,就完成了注册

# 提交到git的CocoaPods仓库
pod trunk push
# 这个操作会把本地的spec田提交到git仓库

到此,自己的开源框架就提交到pod远程的索引库了。尝试一下利用pod添加自己的框架


私有框架

组件化开发的要求我们,自己的功能组件只能本公司使用,所以不能都进行开源的设置。既然这样,就要求我们对自己的框架进行私有化处理

进行私有处理,就不能再把自己的框架提交到git的CocoaPods索引库了。所以我们就要建立属于我们自己的私有库,包括私有本地库私有远程库

私有本地库索引库
上面说道,pod的工作机制是把git的cocoapods索引库拷贝到本地,进行检索的。

git的CocoaPods的索引库克隆到本地,默认的名字为master
为了完成框架私有化,我们需要创建另外一个本地的索引库,用来当做自己的私有本地库

私有远程库索引库
需要在远程建立自己私有CocoaPods索引库,创建方式和git代码库一样。
创建好远程私有库,就要和本地的私有库进行关联。关联以后本地的私有索引库有更新,远程的就会自动更新


操练1 、 指定路径使用pod,不需要索引库

1、编写框架
2、在框架目录 生成并修改 podspec 描述文件

pod spec create 描述文件名字,建议和项目名字一样

本地框架修改描述文件,只要对主要参数修改一下就可以,

s.soure = "" // 因为是本地使用,置空就可以 
s.souce_files = "" // 关键代码的相对路径 

因为验证文件是根据远程使用的标准进行验证的。所以本地的可以不验证

3、在需要使用框架的目录,创建pod文件,并且修改pod文件

podfile的内容添加框架的时候,要指明spec描述文件所在的路径

 platform :ios, '8.0'
target 'TargetName' do
use_frameworks!
pod 'MyLibName', :path => '../MyLibName
'
end

4、 pod install 正常使用

本地路径方法的缺点
1、不能团队共享
2、存放代码的路径不能修改,修改就不能使用


操练2 、远程“私有”库使用CocoaPods

远程私有库,支持多个CocoaPods库的检索和使用。为了能够使CocoaPods能够检索,就需要本地的索引库进行支持。
我们创建本地索引库的方式,是首先创建远程私有的索引库,然后克隆到本地,生成本地的索引库

1、在远程github创建私有库(收费的) 或者 在git.coding 创建私有库(免费的)

远程私有索引库,其实和git的代码库是一样的,只不过这个仓库单独用来CocoaPods索引使用

2、通过URL,把远程的私有索引库克隆到本地。这样本地就有了CocoaPods的索引库

# 通过连接创建本地索引库
pod repo add 本地索引库名字 git地址

# 查询本地所有索引库,就会看到上面命名的索引库
pod repo

这样一来,就创建了远程私有索引库 和 本地索引库,并且存在关联

3、在git.coding 再创建一个代码仓库,进行框架代码的管理(是代码文件的管理,不是索引的管理)。在本地写框架代码,并上传到远程私有代码仓库不能使用上面的索引库),添加标签,并推送到远程代码库;

4、创建spec,修改,并验证

5、把spce先push到本地的索引库,

pod repo push 本地私有库名字 spec文件

6、本地私有索引库在push到远程的索引库,这一步是索引库自动完成

7、接下来我们测试一下 pod install。会发现,并不能找到我们的框架。
这是因为。如果在podfile文件里面,不写任何索引库的路径,默认的只是在git的 pod 索引库进行检索。自然是找不到我们的私有库了
所以我们要在pod文件中提供索引库路径。这样就可以检索到我们的私有框架了

source 'git@git.coding.net:xxx/xxx.git'
source 'https://github.com/CocoaPods/Specs.git'  #官方仓库的地址

添加在 Podfile的最上面就可以了

三、总结

这篇文章中,主要讲解了CocoaPods的深入使用

0、让自己的框架支持pod导入,创建描述文件,利用trunk提交到git索引库
1、本地路径使用pod导入框架,通过spec描述文件所在路径进行pod导入
2、远程私有的pod索引库,创建远程私有索引库,和本地私有索引库。

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

推荐阅读更多精彩内容