最近项目经管理需要做到组件化,而组件化自己动手的第一步
需要用到 CocoaPods
制作私有PodSpec
,网上查了很多相关文章,跟着文中去实施起来,发现作者自己理解了,写出来中间多多少少都会少几步,实践起来需要结合上下文花费大量时间去理解。写这篇目的是以一个新手角度,跟着文中一步一步来从0开始让你只需要2小时
学会 CocoaPods 制作私有仓库,熟练起来还需要多练几次就能达到像我一样,现在只需要5分钟打完tag
后推到自己私有库。
1、
github 创建仓库(pod仓库 https://github.com/cicic1c1/podspec.git),这个仓库作用管理pod的版本(仓库要初始化,不能为空里面有个文件README.md,或者自己弄个文件上去(不能是空文件夹),否则步骤14
会失败push不上去,需要去自行研究 Git
知识 baidu、Google)
2、
添加私有库,把步骤1
中创建的pod仓库,添加到本地 ~/.cocoapods/repos
中,只需要执行命令 pod repo add mypodspec https://github.com/cicic1c1/podspec.git
,去查看所有pod仓库执行pod repo
查看添加成功没有
3、
github 创建仓库(代码仓库https://github.com/cicic1c1/code.git),这个仓库作用管理代码 (这个仓库为空仓库,里面什么都没有,README.md也没有,初始化也没有,不然步骤12
会push失败,需要去自行研究 Git
知识 baidu、Google) ,此时我们有了2个仓库
4、
去你想去的目录初始化一个pod工程,执行pod lib create Demo
,我是在~/Desktop
目录下初始化pod工程,我自己全部选No
(为什么选No步骤5
有详细说明,我不需要pod帮我创建一个测试工程)。 这一步根据自己的需求选择,(这是pod
知识,自行baidu、Google pod lib create
)
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
6、
打开 Xcode 新建一个同名
工程(我的名字是Demo),将新建工程里面文件全部
丢进你删除那个文件夹下面(也是就是步骤5
那个文件夹),完成后如图6.2.png
。
7、
去pod lib create Demo
出来Demo根目录执行pod init
,pod install
(一定要先init
,再install
,这样就能把自己建的那个工程与pod lib create Demo
那个工程关联起来)。
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
9、
打开 Demo.xcworkspace
将Sources,Demo.podspec
丢进工程。Classes 目录下就可以写工具类代码了,我写了一个打印测试Test.swift
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']
11、
验证 Demo.xcworkspace
文件编写是否正确,执行pod lib lint
,"--allow-warnings"为忽略警告作用(Sources 里面要有文件不能为空否则无法验证通过, 'source_files' 会报错),我的项目有警告所以用这句pod lib lint --allow-warnings
,看到Demo passed validation.
为验证通过
12、
上传代码到步骤3
代码仓库,仓库中有了代码
git add .
git commit -m "test 打印输出类"
git pull
git push origin master
13、
打tag,推送tag 到代码仓库
git tag -a 0.1.0 -m "V0.1.0"
git push origin 0.1.0
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(去掉警告)
15、
新建一个工程Podfile 引入私有库,至此测试成功
在实施步骤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] [仓库地址]
网友评论