CocoaPods实现模块化开发

利用CocoaPods集成的优势,管理代码块,组件,实现模块化开发已是很多公司比较推崇使用的技术点。实现的效果是把你封装起来的常用的功能或者组件,放到pod里面去管理,其他人可以用pod快速集成。

代码模块化的目的:

1.易于管理代码

2.方便的集成使用代码块进行快速开发,相比直接复制到多个项目,优势很明显。(pod ‘xxx’)

2.更新pod里面的内容,那么其他使用到的地方可以实现同步更新。(pod install)

3.可以随意的组装代码块,使得你实现不同的功能。

由于这是我初次使用,可能涉及的面比较窄,但是换汤不换药,相信看完这篇,你就会明白是如何实现的。进入正题!

### 制作步骤为以下五个:

一、 安装CocoaPods
二、 github创建代码仓库
三、制作本地库( 创建和配置 podspec文件)
四、 上传至github
五、上传至cocoapods官方库
六、 搜索使用

一、 安装CocoaPods

这里不再介绍,有需要的朋友可以查看我的另外一篇最新Cocoapods安装、降级、使用(Mac Pro),里面有比较详细的介绍。

二、 github创建代码仓库

1.在个人主页 New repository

2.仓库的配置,如下图所示

7E5554C5-79E9-463E-8D5B-2108B29EBF9B.png

Repository name为你要创建的代码块(仓库)的名称
Description (optional) 描述这个代码块的功能,可选

下面这几个我们都不勾选
Initialize this repository with a README 这个可以勾选,如果不勾选,后面可以自己创建,建议勾选上回自动生成
Add .gitignore: 这个可以使用none
add a license: 我这里选择 MIT License

3.创建成果以后效果如下图所以

434D83A6-5026-40FC-A330-B1E523762303.png

4.到这里已完成在github上面空仓库的创建,生成的地址https://github.com/XXX/XXDemo.git就是我们下面要使用的。

三、 制作本地库( 创建和配置 podspec文件)

1.命令行创建一个存放的文件夹(cd 到制定的目录)

mkdir TestDemo /** TestDemo文件夹名称下面同样的 **/

  1. 直接创建(直接在制定的目录)
   在鼠标右键创建文件夹,名称为 TestDemo  /** TestDemo文件夹名称  **/
  1. 创建pod本地的库

cd到上一步创建的目录执行创建库指令

pod lib create TestDemo

终端会出现 Cloning https://github.com/CocoaPods/pod-template.git into TestDemo.,在这里需要等待几分钟,坐等完成就可以然后出现 To get you started we need to ask a few questions, this should only take a minute.这个是需要我们需要设置几个小问题,如下图所示

8A37D5E3-996F-4C85-B670-1D00EA04D8BE.png

问题的意思就是这样:

1.你想要使用哪个平台?[iOS / macOs]
2.你想要使用哪种语言?[Swift / ObjC]
3.你的库中是否包含一个示例程序?[Yes / No]
4.你想要使用哪个测试框架?[Specta/ Kiwi / None]
5.你想要View基础测试?[Yes / No]
6.你的类名前缀是什么?(我这里填的是 TD)

设置完这个会自动执行 pod install,分析依赖和下载需要的配置文件,根据上面的问题的选择创建一个工程。如下图所示

297A7E1F-A26B-438C-A516-46552132B25A.png

完成之后会自动打开xocde。

里面的目录结构如图所示

75804B5C-CA92-43CF-B125-24C640995B80.png

把需要的文件 放到如图所示的位置ReplaceMe.m可以选择删掉

03B2D723-E346-46A1-834A-D3CA960D9EE1.png

到这里,已完成了本地库的创建,这里注意````:path 后面的路劲```。你可以新建一个工程,试着导入,如图所示:

CBDCC60D-F4E9-4A86-811B-0D9E71F4CB85.png

如果没有上传到github和coocoapods官方库的需求,这里其实也是完成了cocoapods本地私有库的创建。可以在本地使用

  1. 配置TestDemo.podspec 文件的简单说明
Pod::Spec.new do |s|
  s.name         = "会默认生成"        --- 与github上创建的一致,代码块的名称
  s.version      = " 默认生成 0.0.1"   --- 代码块的版本
  s.summary      = ""                 -- 项目的摘要
  s.description  = <<-DESC
                        ///这里填写项目的描述,建议要写的比上面的摘要长,不然会有警告
                   DESC
 s.homepage     = "https://github.com/XXX/XXX.git" --- github仓库的下载地址
 s.license      = { :type => "MIT", :file =>  "LICENSE" } --- 对应我们在创建仓库的时候选择的MIT License,授权许可文件
 s.author             = { "XXX" => "XXX@XXX.com" } --- 这里显示作者名称和邮箱,可以选择致谢一个名称,你自己随便写一个就可以
 s.platform     = :ios  ---- 使用的平台
 s.ios.deployment_target = "8.0"  ---- 使用的平台最低支持的版本
 s.source       = { :git => "https://github.com/XXX/XXX.git", :tag => s.version }  --- 填写github仓库的下载地址,后面的照写就可以
 s.source_files  = "XXX/XX/*.{h,m}"   ---这里很容易出错,请注意 ,这里的路劲是相对于 XXX . podspec的文件的位置来说的,如果你的代码块文件夹与他同级,则可以直接写  "文件夹名称/*.{h,m}",不在同一级在按级往下写

注意点: 如果是swift工程 记得往里面 增加 spec.swift_versions='3.0' 或者spec.swift_version = '3.0', '4.0'也可以spec.swift_versions = ['3.0']或者spec.swift_versions = ['3.0', '4.0', '5.0'] 否则会出现验证通不过报错。

到这里基础配置已完成,如有包含第三方什么的,则需要把s.framework注释打开 ,模仿后面示例添加即可。其他的也是类似

四、 上传至github

配置了这么多,还没有提交,是不是很期待?下面就开始搞事情了,依次在终端输入并执行下面的命令

注意:这里本地已生成了README.md和 LICENSE文件,这也是为什么我在第二步创建仓库的时候不勾选的原因

2.开始提交操作,依次执行下面命令

1. git add -A
2. git commit -m '描述'
3.git remote add origin https://github.com/XXX/TestDemo.git ///https://github.com/XXX/TestDemo.git就是第二步github上面得到链接
4.git push -u origin master

如果push出现冲突没使用下面的
git pull --rebase origin master git push -u origin master如果还出现冲突,使用下面的git push -u origin master -f ```

下面需要打tag,与你的.podspec里面的s.version 一致

5.git tag '0.1.0'
6.git push origin 0.1.0 ///也可以使用 git push --tags

ok,到此为止,相信你已成功的提交代码到github上了!
如看到下图所示的说明已经成功。

998DD3CD-52F9-4B3C-B34C-BDF456747FAE.png

五、上传至cocoapods官方库

  1. 如果没有没有注册过pod账户的首次需要注册,不要怕,这很简单
pod trunk register 邮箱  '用户名'  --description='描述'
/**这里的邮箱和用户名建议写成你的github上登录的邮箱和账户名称 ,**/

执行成功以后,你的邮箱会收到一封邮件来自[cocoapods]的邮件,赶紧去邮箱查看,复制里面的链接在浏览器里面打开,就完成了注册了,是不是真的很简单???

可以验证一下注册的结果

pod trunk me   /** 会输出你刚才注册时候填写的信息**/

下面就是验证测试一下你的pod的配置是否正确

如果只想验证本地就使用
pod lib lint XXX.podspec  --allow-warnings

验证远程仓库和本地库(在 push之前一定要用下面这个验证一下)
pod spec lint XXX.podspec --allow-warnings  

在这里如果出现了错误,请在 XXX.podspec的同级目录下创建一个指定swift版本的文件并指定版本号,如下所示
错误:
xcodebuild: error: SWIFT_VERSION '3.2' is unsupported, supported versions are: 4.0, 4.2, 5.0. (in target 'App')

解决 echo "5.0" >> .swift-version 5.0为指定的版本号

如果上一步,没有错误,那么恭喜你可以正式推送啦

pod trunk push --allow-warnings

不出意外就会出现,下图所示


102CC72E-8F0B-4AC1-A3C0-4A4E5F267359.png

更新pod本地仓库

pod repo update  更新pod本地仓库

到此为止你已成功的创建了一个代码块,可以先去抽根烟放松一下,因为在推送成功以后可能会有延迟。

六、搜索使用

1.搜索

pod search XXX  /**XXX 为你的代码块的名称 **/

如果报错搜不到,可能是因为本地缓存的索引在作祟,你可以前往->前往文件夹中输入
~/资源库/Caches/CocoaPods
把search_index.json删掉,再试一次。有奇迹出现!!!

更简单的,一句命令行
rm ~/Library/Caches/CocoaPods/search_index.json

2.使用

pod ‘ XXX  ’  /**XXX 为你要集成的代码块名称 **/


pod  install   /**集成代码块到你的项目中,就可以像使用第三方框架一样使用啦**/

以上就是一些我首次使用CocoaPods管理代码的一些步骤,中间也经历了一些坑,如果你在使用的过程中出现问题可私我。不足的地方欢迎大家指正!(也可以加群交流开发技术 457236811)

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