关于组件化放到cocopoad仓库的流程及步骤码云为例子
1、码云仓库创建一个仓库地址例:YYOUCarKnowledgeComponent,跟平时创建代码仓库一样,复制好仓库地址
2、打开终端到当前用户,将远程仓库关联到本地 cd-->.cocoapods-->repos查看镜像下的文件
执行命令:pod repo add YYOUCarKnowledgeComponent(创建的仓库的项目名) https://gitee.com/****/YYOUCarKnowledgeComponent.git(刚才复制的项目地址)
再次去查看一下cocopoad文件下的内容/Users/**/.cocoapods/repos
会发现多了一个YYOUCarKnowledgeComponent文件
3、新建本地私有代码仓库
(一)、cd到指定的目录,Users/***/YYOUCarComponentLibrary,这个YYOUCarComponentLibrary是自己创建的一个文件目录
创建自己想要封装的组件的名称 根据功能和需求来定
pod lib create YYOUCarKnowledgeComponent
执行该命令后会出现一系列设置 我的设置如下
What platformdoyou want to use?? [ iOS / macOS ]>iOS
开发语言设置,根据自己而定,这里为ObjC
What languagedoyou want to use?? [ Swift / ObjC ]>ObjC
//是否需要创建一个demo用来测试你的组件,这里选择Yes,是为了之后对写好的组件进行测试
Would you like to include a demo applicationwithyour library? [ Yes / No ]>Yes
//测试框架
Which testing frameworks will you use? [ Specta / Kiwi / None ]>None
//是否要做基础的视图测试
Would you like todoview based testing? [ Yes / No ]>No
//文件前缀
What is yourclassprefix?>YYOUCar
以上步骤创建完成之后,项目会自动打开 打开项目的层级结构如下图
打开项目的层级目录在项目的finder里找到如图的目录结构,替换replaceMe,为自己需要封装的代码,路径地址如下
替换路径去码云创建代码仓库YYOUCarKnowledgeComponentCode
创建好代码仓库后,回项目设置相关配置,所有配置的设置在.podspec 所需陪住严格按照下图
配置版本号 配置仓库首页地址以及仓库地址前面步骤完成之后,将这个组件提交到码云
远程私有库代码仓库
一定要cd到工程目录下 然后把本地的代码提交到远程仓库
cd cd/Users/**/YYOUCarComponentLibrary/YYOUCarKnowledgeComponent
git remote add origin https://gitee.com/****/YYOUCarKnowledgeComponentCode.git
git push -u origin master#第一次可能会报错可尝试用 git push -u origin master -f 可能会覆盖远程的修改
git add .#记得后面一定要有 .(此步骤容易报错,导致后续路径不正确,注意解决)
git commit -m"创建我的组件"
git push -u origin master
git tag '1.0.0' #注意:这里的tag号必须和.podSpec文件的版本号一致
git push --tags
cd到工程目录下 对文件进行本地验证和远程验证
从本地验证你的pod能否通过验证
pod lib lint --use-libraries --allow-warnings(命令行之间有空格的)
--verbose:有些非语法错误是不会给出错误原因的,这个时候可以使用--verbose来查看详细的验证过程来帮助定位错误。
--use-libraries:表示使用静态库或者是framework,这里主要是解决当我们依赖一些framework库后校验提示找不到库的时候用到。
--allow-warnings:表示允许警告
验证成功会出现如下图
本地验证pod成功如果本地验证不成功,报错类似“ ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `YYOUCarCommonComponent` depended upon by `YYOUCarKnowledgeComponent`”依赖的组件找不到之类的错误,在pod lib lint --use-libraries --allow-warnings时加上引用的组件的远程仓库地址,cocopoad源的组件地址,如下:pod spec lint --sources='http://10.180.4.226/Candy/YYOUCarCommonComponent.git,https://github.com/CocoaPods/Specs.git' --use-libraries --allow-warnings--verbose 再次本地验证即可,远程验证也是如此
同样在工程目录下,验证远程的pod看能否通过
pod spec lint --use-libraries --allow-warnings(命令行之间有空格)
本地远程验证pod通过将spec文件提交到本地的私有仓库 然后再push到远程仓库
在项目工程目录下
pod repo push YYOUCarCommonCategory(之前在码云仓库创建的pod私有库名称不是创建的代码仓库时的项目名称)CommonCategory.podspec --use-libraries --allow-warnings
push到远程仓库再去看.cocoapods/repos/YYOUCarCommonCategory
里面会有对应的组件文件夹CommonCategory
查看远程私有库如图
码云上私有库去终端查看自己的似有组件
pod search CommonCategory but 有可能会查不到哟,第一次刚安装成功后pod search 成功了,第二天就搜索不到了,我也不知道为啥,但是不影响正常使用,或许和私有代码仓库有关系,有大神可以指点一二 报错图如下
报错图项目中的引用
cd到要使用的项目工程目录下 打开该工程的Podfile
用第一次pod成功后的 pod 命令安装,
注意,要在Podfile中引入,该组件的组件源cocopoad仓库地址,不是引入组件的代码哦,是组件spec仓库的地址,因为我们一开始创建了两个仓库,一个是存放本地cocopoad仓库的私有仓库,一个是本地代码的私有仓库,如果引用错误,会导致安装失败,添加自己的私有源后,回来直接pod install 会报错,原来正常的第三方库,会报找不到,解决办法,把cocoapod的官方source,
cocopoad官方源地址:source 'https://github.com/CocoaPods/Specs.git'
同时加入到Podfile 即可
最后就是pod install 成功,可以正常使用啦
如果后续,再去pod search 搜索不到自己的组件 报错如下:
[!] Unable to find a pod with name, author, summary, or description matching `xxx`
解决方法就是Finder前往资源库去删除缓存中的search_index.json(****修改成你自己电脑路径)
/Users/*****/Library/Caches/CocoaPods删除search_index.json
然后再输入pod search时会重新创建这个search_index.json
此时pod search就能搜索出自己的组件了
网友评论