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] [仓库地址]

你可能感兴趣的:(iOS 组件化第一步 CocoaPods 制作私有库PodSpec)