一、组件化
组件化步骤
1.每创建一个组件都会带有一个xxx.podspec的索引文件。专门用来存放这些索引文件的库就叫索引库。我们需要将这些文件上传到远程索引库才能保证其他的同事能够拿来使用。
2.下面开始创建远程索引库:登录github
创建新的仓库 创建远程索引库由于之前已经创建好了一个库所以我的库名字跟上面有差异
3.如下图,说明已创建成功:
仓库地址可以看到远程索引库的地址啦
二:本地索引库
与远程索引库对应,本地索引库是用来存放本地索引文件的库。
创建本地索引库
1.打开终端,通过命令 pod repo 查看我们已经有哪些本地索引库存在了,如果未创建过,则只有一个master
已经创建好的本地索引库2.通过“pod repo add <本地索引库的名字> <远程索引库地址>” 来创建本地索引库并和远程索引库做关联
创建与远程索引库关联的本地索引库3.在finder中如下路径已经可以看到创建成功了。
本地索引库查看路径三:远程代码库
用来存放准备组件化的代码,创建方式和创建索引库方式一样。这里我随便写一个文件组件化,所以我创建了一个testKit的远程代码库
1.如下图:
创建组件化文件的代码库如下图表示远程代码库已经创建成功
件化文件的代码库四:本地代码库
这里创建TestKit本地代码库
1. pod lib create 组件名
注意这里创建本地代码库是可以选择路径的,也就是说你想创建在哪里(cd 到路径就可以),后面会用到路径。
创建项目 项目选择项目目录
项目目录3.编译成功的话,把我们想要组件化的文件拖入文件夹中
准备添加组件化文件4.添加完需要组件化文件后到项目 Example文件夹下执行 :
pwd Example文件地址
pod install Example文件地址
执行上述两行命令注:pwd命令 以绝对路径的方式显示用户当前的工作目录。将当前目录的全路径名称.(从根目录)写入标准输出。全部目录使用‘/’分隔。第一个‘/’表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径的名称。
TestKit已经将需要组件化的组件pod进来了
pod成功对应组件5.编译组件不报错的话,开始修改podspec文件:
一般修改以下几个内容:
1>修改版本号
2>修改项目的简单概述和详情描述
3>homepage和source地址
4>添加依赖库
看TestKit组件podspec文件修改前后对比:
修改前:
修改前修改后:
修改后6.编译通过后,提交组件到远程代码库并 打tag
· git add .
· git commit -m "xxx"
· git remote add origin 远程仓库地址
· git push origin master
· git tag 版本号 (注:这里的版本号必须和podspec里写的版本号一致)
· git push --tags
上传命令执行7.在生成组件的项目目录下(含有xxKit.podspec的文件夹)通过pod spec lint --verbose --allow-warnings命令验证podspec索引文件
验证通过8.验证通过后,使用 pod repo push <本地索引库> <索引文件名> --verbose --allow-warnings 提交索引文件到远程索引库
提交索引文件到远程索引库9.在finder中的本地索引库中查看是否成功
提交成功10.组件使用时和cocopod引入第三方一样,在需要引入该组件的工程里修改podfile.
注:需要在Podfile中指定组件远程索引库地址,如果不指定默认会从master的索引库查找就会报找不到组件)
Podfile文件修改如下:
pod中添加组件信息 执行pod install11.注意一点在创建组件时应该尽量使用有一定规则的组件名称用来区别与其他公司或者个人创建的组件进行区分,我这个组件就和别人的名字重名了导致,用于测试的工程中导入的组件并非我所创建的。
12.更新组件
那么说完创建一个新的组件,接下来说一下更新组件的步骤
1>.添加或者修改文件并使用git命令如第六步所示提交( git remote add origin 远程仓库地址 命令已执行过则不必执行)
2>修改描述文件并更新索引库
(1)验证远程lib
pod lib lint --use-libraries--allow-warnings
(2)验证远程spec
pod spec lint --use-libraries--allow-warnings
(3)更新索引库
pod repo push <本地索引库> <索引文件(.podspec)> --use-libraries--allow-warnings
当执行完毕后即可在自己需要使用组件的工程中通过简单粗暴的pod install命令更新组件了
也可以使用pod update库名--verbose --no-repo-update 命令更新指定的组件/库 其他组件/库不进行更改
<---未完待续......
网友评论