IOS创建CocoaPods私有库
最近领导说要把项目模块化、组件化,网上看了一大推资料,自己瞎搞了一天,终于告一段落。
IOS创建私有库步骤
1、在终端上移动到你想创建pod库工程的路径,并执行pod库的创建。命令如下
BetterdeMacBook-Pro:~ better$ cd desktop
BetterdeMacBook-Pro:desktop better$ pod lib create PrivateHelloWorld
回车之后,终端会询问你几个哲学的问题
# 选择编程语言
What language do you want to use?? [ Swift / ObjC ]
> Objc
# 在你的项目中是否创建一个demo工程,为了方便测试,我选择了Yes
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
# 测试框架选择哪一个
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
#要不要做视图测试
Would you like to do view based testing? [ Yes / No ]
> Yes
# 类前缀名
What is your class prefix?
> BY

恭喜你,Pod私有库创建成功。一般来说创建成功会自动打开项目
2、安装CocoaPods项目
找到刚才创建的PrivateHelloWorld文件夹,点击入去,里面的目录如下

# 移到Example目录下
BetterdeMacBook-Pro:desktop better$ cd /Users/better/Desktop/PrivateHelloWorld/Example
# 安装CocoaPods项目
BetterdeMacBook-Pro:Example better$ pod install --no-repo-update
安装过程如下图

吓了我一跳,3行黄色字英文,大概意思就是Example文件夹里面的Podfile文件没有指定的平台和版本号,默认用ios,版本为9.3版本,建议你balabalabala.
不管了先进去Example文件夹点击后缀为xcworkspace的文件打开项目,运行下是否成功。 OK成功了
3、添加你要添加代码文件(复制粘贴)

我这里放了PrintHelloWorld文件
4、编辑CocoaPods的配置文件(后缀名为podspec),打开PrintHelloWorld文件夹就可以看到
可以有很多种编辑方式编辑这个文件,如Xcode、文本编辑器、Sublime Text系列、Atom
我是用文本编辑器打开,难看是难看点,但胜在够方便

s.version我习惯是0.0.1开始
s.summary需要改改,不然待会提交会报错
s.homepage这里随便写个网站都行,建议写项目的首页,但一定要改,不然默认的会报错,因为没有默认的网址
s.source需要填一个git地址的私有库,github收费的,为了省钱,找了码云,对,码云(百度就能搜)


复制私有库地址,在.podspec文件内的s.source替换地址

配置完成了
再次移到我们的Example文件,pod更新一下
BetterdeMacBook-Pro:Example better$ pod update --no-repo-update

打开项目,看看是否成功了

嘿,添加进来了那就试试PrintHelloWorld可不可以调用
5、添加PrintHelloWorld,运行测试
打开项目,在BYViewController.m里面导入PrintHelloWorld.h文件

竟然报警了,为什么没有提示的,上网查了下,说直接把要导入的类写进去就好了,试了下还真行,如果有同学知道的话告诉下为什么。

看到信息了,证明我们本地运行代码没问题,人比较懒,没做界面,直接写了句打印,见谅。现在需要将项目发布到git,并添加到pod。
6、验证pod配置文件
为了保证项目正确性,pod文件配置没问题,在提交之前,我们需要验证一下
用终端移到我们的项目路径
BetterdeMacBook-Pro:~ better$ cd /Users/better/Desktop/PrivateHelloWorld

到这里,我们已经完成源码导入、验证项目是否能运行、pod配置文件本地验证了
7、项目发布,tag 0.0.1
终端移到该项目文件下执行git的相关命令
# 添加远程地址,即上面创建码云项目的地址
BetterdeMacBook-Pro:PrivateHelloWorld better$ git remote add origin https://gitee.com/Better_Y/PrintHelloWorld.git
# 添加文件
BetterdeMacBook-Pro:PrivateHelloWorld better$ git add .
# 提交本地,并写描述
BetterdeMacBook-Pro:PrivateHelloWorld better$ git commit -a -m "第一次提交 版本为0.0.1"
# --allow-unrelated-histories
# git pull origin maste会失败 ,提示:fatal: refusing to merge unrelated histories
# 原因是远程仓库origin上的分支master和本地分支master被Git认为是不同的仓库,所以不能直接合并,需要添加 --allow-unrelated-histories
BetterdeMacBook-Pro:PrivateHelloWorld better$ git pull origin master --allow-unrelated-histories
# 推送到码云的PrintHelloWolrd项目的master分支上
BetterdeMacBook-Pro:PrivateHelloWorld better$ git push origin master
# 提交版本号
BetterdeMacBook-Pro:PrivateHelloWorld better$ git tag 0.0.1
# push到远程分支
BetterdeMacBook-Pro:PrivateHelloWorld better$ git push origin 0.0.1

留心的小伙伴可能会看到,有一个已解决冲突的文件README.md,是上面使用git pull origin master --allow-unrelated-histories命令后报的冲突错误,你可以在创建项目时删掉这个文件,但我个人建议是解决冲突,再按上面步骤再来一遍,从 # 添加文件开始
8、创建Sepc管理库
创建步骤跟上面码云创建的git私有库同理
在终端执行Specs创建命令
BetterdeMacBook-Pro:PrivateHelloWorld better$ pod repo add PrintSpecs https://gitee.com/Better_Y/PrintSpecs.git
现在,我们可以直接发布了
# PrintSpecs是刚才上面添加的管理库名字
# PrivateHelloWorld.podspec是PrintHelloWorld项目里面后缀为podspec的文件名
BetterdeMacBook-Pro:PrivateHelloWorld better$ pod repo push PrintSpecs PrivateHelloWorld.podspec
发布成功后,我们可以去码云看看PrivateSpecs的git项目有没有提交成功

查看我们本地的Specs库:
直接Findle ->右键 -> 前往文件夹 -> 输入:~/.cocoapods/repos ->点击前往


到这里,我们的私有库发布已经全部完成了
9、检验私有库发布
新建privateDemo项目,创建Podfile文件并安装
Podfile代码如下
platform :ios,'8.0'
target 'privateDemo' do
pod 'PrintHelloWorld',:git => 'https://gitee.com/Better_Y/PrintHelloWorld.git'
end
打开终端并执行pod安装指令:
BetterdeMacBook-Pro:~ better$ cd /Users/better/Desktop/privateDemo
BetterdeMacBook-Pro:privateDemo better$ pod install --no-repo-update
成功结果如下

我们打开PrivateDemo项目目录看看

我们在Appdelegate.m文件试试能否调用

到这里,验证我们的私有库发布就完满结束了!!
网友评论