iOS 组件化第一步 CocoaPods 制作私有库PodSpec

最近项目经管理需要做到组件化,而组件化自己动手的第一步需要用到 CocoaPods制作私有PodSpec,网上查了很多相关文章,跟着文中去实施起来,发现作者自己理解了,写出来中间多多少少都会少几步,实践起来需要结合上下文花费大量时间去理解。写这篇目的是以一个新手角度,跟着文中一步一步来从0开始让你只需要2小时学会 CocoaPods 制作私有仓库,熟练起来还需要多练几次就能达到像我一样,现在只需要5分钟打完tag 后推到自己私有库。

1、github 创建仓库(pod仓库 https://github.com/cicic1c1/podspec.git),这个仓库作用管理pod的版本(仓库要初始化,不能为空里面有个文件README.md,或者自己弄个文件上去(不能是空文件夹),否则步骤14会失败push不上去,需要去自行研究 Git知识 baidu、Google)

1.png

2、添加私有库,把步骤1中创建的pod仓库,添加到本地 ~/.cocoapods/repos中,只需要执行命令 pod repo add mypodspec https://github.com/cicic1c1/podspec.git,去查看所有pod仓库执行pod repo查看添加成功没有

2.png

3、github 创建仓库(代码仓库https://github.com/cicic1c1/code.git),这个仓库作用管理代码 (这个仓库为空仓库,里面什么都没有,README.md也没有,初始化也没有,不然步骤12会push失败,需要去自行研究 Git知识 baidu、Google) ,此时我们有了2个仓库

3.png

4、去你想去的目录初始化一个pod工程,执行pod lib create Demo,我是在~/Desktop目录下初始化pod工程,我自己全部选No(为什么选No步骤5有详细说明,我不需要pod帮我创建一个测试工程)。 这一步根据自己的需求选择,(这是pod知识,自行baidu、Google pod lib create)

4.png

4.1.png

5、步骤4成功后打开Demo文件夹,在根目录删除 _Pods.xcodeproj、Example,有(Assets/Classes)文件夹改名 Sources(这样做的目的是不需要pod lib create Demo这一步时候,在这个问题 Would you like to include a demo application with your library? [ Yes / No ] > Yes ,Yes就会帮我们创建一个测试工程。如果创建了测试工程,你需要将你写好的工具类丢到Classes目录下,cd到Example文件夹下(Yes才有这个文件夹),再执行pod install你的这个测试工程就有了你工具类,这样操作太麻烦)所以我自己新建一个同名工程,每次Classes创建类,就没有这一步操作详细请看步骤6

5.png

6、打开 Xcode 新建一个同名工程(我的名字是Demo),将新建工程里面文件全部丢进你删除那个文件夹下面(也是就是步骤5那个文件夹),完成后如图6.2.png

6.png
6.1.png
6.2.png

7、pod lib create Demo出来Demo根目录执行pod init,pod install(一定要先init,再install,这样就能把自己建的那个工程与pod lib create Demo 那个工程关联起来)。

7.png
7.1.png

8、pod lib create Demo 出来的工程,关联到github 创建代码仓库(代码仓库https://github.com/cicic1c1/code.git)执行命令git remote add origin https://github.com/cicic1c1/code.git, 查看关联上没有git remote -v

8.png

9、打开 Demo.xcworkspaceSources,Demo.podspec丢进工程。Classes 目录下就可以写工具类代码了,我写了一个打印测试Test.swift

9.png

10、修改Demo.xcworkspace 里面pod配置信息,这个可以baidu、Google,根据项目需要来配置。
s.homepage = '步骤3中地址(代码仓库地址)'
s.source = '步骤3中地址(代码仓库地址)'
s.ios.deployment_target = '10.0' (工程targets 对应修改10.0) 我自己项目支持10.0
s.swift_version = '5.0' 我自己项目支持5.0
s.source_files = 'Sources/Classes/**/*' 步骤5中改Sources对应
s.resource_bundles = ...['Sources/Assets/*.png']

10.png

11、验证 Demo.xcworkspace 文件编写是否正确,执行pod lib lint,"--allow-warnings"为忽略警告作用(Sources 里面要有文件不能为空否则无法验证通过, 'source_files' 会报错),我的项目有警告所以用这句pod lib lint --allow-warnings,看到Demo passed validation.为验证通过

11.png

12、上传代码到步骤3代码仓库,仓库中有了代码
git add .
git commit -m "test 打印输出类"
git pull
git push origin master

12.png

13、打tag,推送tag 到代码仓库
git tag -a 0.1.0 -m "V0.1.0"
git push origin 0.1.0

13.png

14、push 代码仓库的Demo.podspec到pod仓库中去,执行命令pod repo push mypodspec Demo.podspec --allow-warnings --verbose(push 步骤3仓库中的 *.podspec -> 步骤1仓库中去) 无报错成功。(.cocoapods/repo可以查看 tag 成功没有),命令意思pod repo push (.cocoapods/repo/仓库名,步骤2中起的名字) Demo.podspec(pod 配置文件) --allow-warnings --verbose(去掉警告)

14.png

15、新建一个工程Podfile 引入私有库,至此测试成功

15.png
15.1.png

在实施步骤14、pod repo push [xxx] [xxx]增加私有 pod 时出现过2次问题:The repo `xxxxx` at `../../../../../.cocoapods/repos/xxxx is not clean
解决办法:1、先移除 pod repo remove [xxx]2、再次添加pod repo add [xxx] [仓库地址]

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

推荐阅读更多精彩内容