iOS项目组件化架构方案中,需要把每个组件以独立工程的形式存储在远程仓库
远程私有库实现
创建远程索引库
1、在第三方代码托管网站coding创建私有的远程索引仓库,命名为PjPodspecs
2、使用终端命令生成ssh对称密码对
在/Users/xianrong/.ssh 路径可以查看到id_rsa和id_rsa.pub这两个文件,它们分别为私钥和公钥
3、使用公钥在coding网站上的(账户 –> SSH公钥)上进行设置。
4、把远程索引库拉取到本地,取名为“ProjectPodspecs”
可在/Users/xianrong/.cocoapods/repos/路径下查看到ProjectPodspecs,也可以使用终端命令pod repo查看
创建远程代码库,并提交代码
1、在第三方代码托管网站coding创建私有远程仓库,命名为PjBase
2、克隆pod模板库
在自定义的/Users/xianrong/Desktop/Component/路径下
3、把要上传的代码拷贝到ProjectBase/ProjectBase/Classes/路径下,并把ReplaceMe文件删除。
4、进入ProjectBase/Example/路径下进行安装
5、把本地代码提交到远程代码库PjBase
在/Users/xianrong/Desktop/Component/ProjectBase/路径下
修改ProjectBase.podspec文件内容
提交更改
对刚才修改的spec进行本地验证
注意:如果创建的是swift项目,提示.swift-version报错,执行
添加远程仓库地址
提交代码到远程
小插曲:push提交失败使用了强制提交命令git push -u origin master -f
这样会使远程修改丢失,慎用!
本地打标签
远程打标签
远程验证
本地spec提交到远程私有spec仓库
进入/Users/xianrong/Desktop/Component/ProjectBase/路径下
这时本地.cocoapods子路径下和远程仓库PjPodspecs都能看到了ProjectBase.podspec了
这个提交过程其实是:把本地代码里的spec提交到本地私有spec库(即/Users/xianrong/.cocoapods/repos/ProjectPodspecs),它会自动将本地私有spec库提交到关联的远程spec库
把创建好的远程私有库引入宿主工程
查看源
在Podfile文件里添加源,举例:
远程私有库升级版本
1、在ProjectBase/ProjectBase/Classes/路径下添加新代码
2、修改ProjectBase.podspec文件内容
3、进入ProjectBase/Example/路径下进行安装
4、把本地代码提交到远程代码库PrivateLib
在/Users/xianrong/Desktop/Component/ProjectBase/路径下
|
|
6、提交代码到远程
本地打标签
远程打标签
远程验证
7、本地spec提交到远程私有spec仓库
进入/Users/xianrong/Desktop/Component/ProjectBase/路径下
远程私有库划分子库
举例:把基础组件ProjectBase划分为Category、Network、Macro、Tool四个子库
1、修改ProjectBase.podspec文件内容
把source_files和dependency部分进行进行修改
dependency部分可以根据具体情况进行设置,上面例子因为只有Network子库依赖用到AFNetworking,因此把依赖写进对应子库内部。
2、参照“远程私有库升级版本”步骤操作进行升级版本。
3、在引用项目Podfile文件里引用子库
或者
创建多个组件库
克隆pod模板库
在自定义的/Users/xianrong/Desktop/Component/路径下
在处理ProjectMain组件的Example(测试用例工程)时,注意点:
举例:ProjectMain组件依赖ProjectBase组件中的Category子库
1、在Example的Podfile文件里添加ProjectBase组件源和pod官方源
2、修改ProjectMain.podspec文件内容
3、Example里如果涉及到加载bundle资源的问题
mainBundle是指测试项目的bundle,应该是调整为从组件的framework对应的bundle里找对应的资源
4、组件内的资源图片放置在/…/ProjectMain/ProjectMain/Assets/路径下
打开ProjectMain.podspec文件里的图片引用路径
5、属于组件内部的xib中图片的路径需要调整为组件framework内部的资源文件路径ProjectMain.bundle/btn_imgName
6、属于组件内部的图片加载方式需要调整(不属于组件内部的图片则放在测试工程里可以使用imageNamed:的方式)
本地私有库实现
1、进入ProjectTest文件夹目录
2、把代码文件添加到ProjectTest/Classes/路径下
3、修改.podspec文件内容:
4、在项目的Podfile文件中添加路径:
注意:该路径为找得到.podspec的本地路径
附上.podspec文件内容含义:
s.name:名称,pod search 搜索的关键词
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.homepage:项目主页地址
s.license:许可证,例如s.license= { :type => “MIT”, :file => “LICENSE” }
s.author:作者
s.social_media_url:社交网址,这里我写的微博默认是Twitter,如果你写Twitter的话,你的podspec发布成功后会@你
s.source:项目的地址
s.source_files:需要包含的源文件,
s.resources: 资源文件
s.requires_arc: 是否支持ARC
s.dependency:依赖库,不能依赖未发布的库
s.dependency:依赖库,如有多个可以这样写s.dependency = ‘AFNetworking’
source_files:写法及含义
““ 表示匹配所有文件
“.{h,m}” 表示匹配所有以.h和.m结尾的文件
“**” 表示匹配所有子目录