概述
- 随着项目的不断迭代,项目的逻辑复杂度会越来越大,代码之间的耦合度也会越来越大,所有,对项目进行组件化处理刻不容缓.
- 组件化,就是将代码模块化,然后上传至gitee或者gitlab上,做成私有库,通过cocoapods引入项目中,通过Lotusoot来完成组件之间的通信.
何如组件化
1.创建cocoapods私有引索库
它是所有的pods的一个索引,所有公开的pods都会放在这里.
- 在gitee或者在gitlab上创建一个私有项目,命名为MySpecs
- 通过
pod repo add MySpecs [私有引索库地址]
将引索库克隆至本地的~/.cocoapods/repos
中,
2.创建私有pod项目(比如 JLAlertTool项目)
- 在本地创建一个文件夹JLAlertTool;
cd [新建的文件夹]
pod lib create JLAlertTool
,之后终端会弹出配置选项: iOS(平台), swift(语言), Yes(创建项目), None(创建测试工程)...- 进入Example,运行项目,在此项目中开发要写的模块
- 代码测试没有问题后,将代码文件转移至
JLAlertTool/Classes
中,将此文件夹中的默认文件删除 - 将图片\其他资源转移至
JLAlertTool/Assets
中 cd Example
,pod install
,运行项目,看是否可以正常执行- 编辑JLAlertTool.podspec文件,
Pod::Spec.new do |s|
# 名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
s.name = "JLAlertTool"
#版本号
s.version = "1.0.0"
#支持的pod最低版本
s.ios.deployment_target = '7.0'
#简介
s.summary = "A delightful setting interface framework."
#项目主页地址
s.homepage = "https://gitee.com/yuanjl/JLAlertTool"
#许可证
s.license = { :type => "MIT", :file => "LICENSE" }
#作者
s.author = { "yuanjl" => "lelebabyboy@qq.com" }
#详细描述
s.description = = <<-DESC
详细描述
DESC
#截图
s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
#项目的地址
s.source = { :git => "https://gitee.com/yuanjl/JLAlertTool.git", :tag => s.version }
#需要包含的源文件
s.source_files = "JLAlertTool/Classes/**/*"
#资源文件
s.resource_bundles = {
'JLAlertTool' => ['JLAlertTool/Assets/*']
}
#是否支持ARC
s.requires_arc = true
#依赖库,如有多个可以这样写
s.dependency 'AFNetworking', '~> 2.3'
end
复制代码
- 编辑完成podspec文件后,需要验证此文件,
pod lib lint
,pod spec lint
- git操作
1.git remote add origin [码云上建立的私有库的.git]
2.git add .
3.git commit -m "注释"
4.git pull origin master --allow-unrelated-histories (可能会有冲突,注意解决冲突后,重新2过程)
5.git push origin master
6.git tag 0.1.0
7.git push origin 0.1.0 (此时本地的私有库代码已经上传到了码云)
复制代码
3.发布私有库
cd [私有库路径]
('Example文件夹的上一级')pod repo push MySpecs JLAlertTool.podspec --allow-warnings --verbose
: 提交私有库至引索库中,可以在~/.cocoapods/repos/JLAlertTool
中看得到
4.使用私有库
- 在项目的Podfile文件中,编辑
source 'https://github.com/CocoaPods/Specs.git' # 官方库
source 'https://gitee.com/yuanjl/MySpecs.git' # 私有库
pod 'JLAlertTool'
复制代码