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 '[email protected]:xxx/xxx.git'
source 'https://github.com/CocoaPods/Specs.git'  #官方仓库的地址

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

三、总结

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

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

你可能感兴趣的:(iOS组件化开发2 · 组件开发必备知识)