iOS组件化搭建私有库

开始之前先明确
两个文件名:1.BaseLibiOS(私有库项目名称)

                     2.BaseLibSpec(私有库索引名称)
两个gitLab的地址,1.(https://git.xxxx.com/BaseLibiOS.git)私有库git仓库地址 
                                2.(https://git.xxxx.com/BaseLibSpec.git)私有库索引库git地址
1.首先创建私有库索引库
1> 在gitlab上创建一个新的库,这个库用来保存私有库的podspec文件,所以我们一般起名字最好是 xxxSpec用以区分这个库的作用。例如:BaseLibSpec


2> 创建的BaseLibSpec索引库必须有master分支,可以添加一个readme文件


3> 创建本地所有库,然后把刚才创建的远程所有库关联。

操作命令:pod repo add <本地索引库名称> <远程索引库gitlab地址>
例如:pod repo add BaseLibSpec https://git.xxxx.com/BaseLibSpec.git

2.创建本地私有库

1> 创建本地私有库,创建目录随意放,例如桌面下的iOSLib文件夹下,cd到iOSLib目录下,然后再创建

cd <你要创建的文件夹目录下>

pod lib create 私有库项目名称
例如:pod lib create BaseLibiOS

2> 执行完上面的命令之后,会显示这些文件让你进行配置

1. 什么平台?
1. What platform do you want to use? [iOS / macOS]
> iOS

2. 什么语言?
2. What language do you want to use? [Swift / Objc]
> Swift

3. 是否集成Demo为自己的模块库?
3. Would you like to include a demo application with your library?? [Yes / No]
> Yes

4. 是否集成测试框架?
4. Which testing frameworks will you use? [Specta / Kiwi / None]
> None

5. 是否基于View的做测试?
5. Would you like to do view based testing? [Yes / No]
> Yes

6. 工程类前缀?
6. What is your class prefix? 
> VZ

3> 配置完成后会自动打开一个xcode工程,层级如下图
iOS组件化搭建私有库_第1张图片

4> 将Classes文件夹下面的ReplaceMe.m文件删除掉,替换成你要上传私有库的代码

5> 然后更新一下这个工程的pod库

1 cd到Example文件下
2.执行 pod install

 6> 修改podspec文件

例如:BaseLibiOS项目下的BaseLibiOS.podspec 文件

iOS组件化搭建私有库_第2张图片

  • 修改版本号
  • 修改项目的简单概述和详细描述
  • 修改homepage和source地址
  • 添加依赖库

ps:这里要注意两点!!

<1> s.homepage需要设置刚创建的私有代码仓库的地址, 不是私有索引库的地址!!!

<2> s.source 需要设置的是私有代码仓库的源地址(选择使用HTTPS地址)!!!

 3.将私有库push到远程仓库
1> 编译通过后,提交组件到私有库git仓库地址 并打tag

git status -- 查看当前git存了什么文件
git add .  -- 将所有文件缓存到待提交文件区域
git commit -m "上传组件" -- 提交文件,写上备注
git remote add origin <私有库git仓库地址(https://git.xxxx.com/BaseLibiOS.git)>
git push -u origin master -- 将代码推送到远程私有库git仓库的master分支
git tag <版本号(例如git tag 0.1.0)>  --这里的版本号必须和podspec里面写的版本号一致)
git push -- tags

4.本地校验

cd <本地私有库目录下(例如:cd BaseLibiOS)>
pod lib lint --allow-warnings

若组件依赖第三方库,需要将第三方库索引地址写上

pod lib lint --sources="cocoapods库地址,私有库远程地址" --allow-warnings

若组件依赖的第三方库又依赖了其他的库,需要命令如下

pod lib lint --sources="cocoapods库地址,私有库远程地址" --use-libraries --allow-warnings

5.远程校验

1> 进行远程校验,其实和本地校验一样,只需要把lib字段改成spec
 

pod spec lint --sources="cocoapods库地址,私有库远程地址" --use-libraries --allow-warnings

例如:pod spec lint --sources="https://git.XXXX/BaseLibSpec.git,git@gitXXXX/BaseLibiOS.git" --use-libraries --allow-warnings

6.提交索引文件到远程索引库

1> 所有验证通过之后,要将spec文件推送到最开始创建的私有库索引库当中

cd 到私有库项目目录(例如:cd BaseLibiOS)

pod repo push <本地索引库名称> <索引文件名> --verbose --allow-warnings

例如:pod repo push BaseLibSpec BaseLibiOS.podspec --verbose --allow-warnings

<本地索引库名称>在/Users/XXX/.cocoapods/repos下的私有库索引项目名称

<索引文件名>就是以podspec结尾的,注意不要弄错

2> 推送去之后,在本地索引库中如下图​​​​​​​​​​​​​​iOS组件化搭建私有库_第3张图片

 

3> 验证私有库

pod repo update -- 先更新一下pod库,不然找不到你刚上传的私有库
pod search 私有库

7. 其他项目使用私有库

source 'https://git.XXXX/BaseLibSpec.git'
pod 'BaseLibiOS'

问题解决:

项目中导入私有库之后,报错如下:
Cannot find 'XXX' in scope
解决:
Swift的私有库文件,类、属性和方法前面用open修饰,init方法前面用public修饰,然后重新上传私有库,打新tag标签,BaseLibiOS.podspec文件的tag也要修改,请参考目录2-6和3、4、5、6,并把tag推送到远端

参考:iOS组件化搭建私有库(cocoapods,gitlab ) - 知乎

参考:iOS私有库创建和版本更新 - 简书 

你可能感兴趣的:(iOS,ios)