iOS组件化-上传组件至CocoaPods

CocoaPods组件,图片加载问题

写这篇文章的主要目的是方便自己查阅...如果恰好能够帮到你那就太好了!

按照下面的步骤操作后,最终的结果应该是:在任何一个iOS项目中都可以使用CocoaPods安装使用提交的组件库。 

接下来就以名为“TRectDetector”的组件为例:

一、准备代码和资源文件

准备需要提交的代码和图片资源,在实际操作中注意2点:

1、若提交的代码中引用了其他的CocoaPods库,把import <> 改成 import "",例如:import <Masnory.h>改成import "Masnory.h"

2、代码和图片资源最好都添加特有的前缀,避免其他项目引入时出现同名文件冲突

二、创建组件工程

1、创建组件工程

cd ~/Desktop

mkdir TRectDetector  #创建一个文件夹

cd TRectDetector/

pod lib create TRectDetector  #pod lib create 组件名

执行命名后,按照提示完成工程的创建,创建完成后会自动打开此工程

注:为了不混淆名称,都使用TRectDetector

2、导入组件代码

将准备好的代码和图片资源分别放入Classes和Assets目录下

三、创建github仓库

登录github并创建一个名为TRectDetector的仓库,拷贝地址:https://github.com/RainyMask/TRectDetector.git

注意不用勾选生成README文件,因为我们创建的组件工程中有README文件

四、配置组件的.podspec文件

找到组件工程的.podspec文件,修改相关的配置项:

s.version   版本号

s.summary 摘要

s.homepage  这里填写自己github的主页地址

s.source 填写创建的github仓库地址

s.source_files 代码位置

s.resource_bundles / s.resources  静态资源位置

s.dependency 依赖的其他CocoaPods库

s.subspec 子库(s.subspec '子库’名称 do |别名|),使用时 pod "TRectDetector/Child"

s.subspec 'Child' do |c|
    c.source_files = ''
    c.dependency 'AFNetworking'
end

五、导入组件代码并运行Example项目

在Example目录下执行 pod install 命令,可导入组件代码如图所示,注意此时Podfile中并没有使用use_frameworks!。

OC项目中一般不使用use_frameworks!,如果使用swift或者dynamic frameworks才添加这行

导入组件代码之后,我们就可以对组件写一些测试代码或者做一个演示的demo。

六、提交代码到github仓库并设置tag

#cd到工程根目录下

git add . 

git commit -m '创建组件'

git remote add origin https://github.com/RainyMask/TRectDetector.git

git push -u origin master -f  # 后续提交直接使用git push就可以

#到此代码已经提交到github的master分支上了,接下来创建tag

git tag '0.1.0' 

git push origin --tags

注意这里设置的tag需和.podspec文件中配置的s.version的值保持一致

这里插入一点git tag的常见用法:

git tag '0.1.0' / git tag -a  '1.0.0  -m '第一版'  #创建tag
git tag     #查看tag
git show 0.1.0      #查看分支备注信息
git push origin —tags      #将本地tag提交到远程仓库
git fetch origin tag 0.1.0       #获取tag对应的版本 
git tag -d  0.1.0      #删除本地tag
git push origin :refs/tags/0.1.0  #覆盖远程的tag,顺序执行这两步可实现删除tag的效果

七、两个验证命令

对代码进行验证,确保无误后再上传。如果验证通过会提示 passed validation,不通过则需要根据错误提示进行修改,然后更新代码和tag。

#验证代码的正确性:
#pod lib lint     用于验证本地的代码
#pod spec lint     对本地和远程代码都验证
#<组件名>.podspec     如果在项目根目录下执行不需要添加此参数
#--verbose     显示详细错误原因
#--use-libraries     使用静态库或者是framework
#--allow-warnings     允许警告存在



#cd到项目根目录下
pod lib lint  --use-libraries --allow-warnings
pod spec lint  --use-libraries --allow-warnings

#验证时间较长,需等待一会儿

八、上传至公共索引库

终端执行命令 pod trunk me,若未注册执行注册命令:

# pod trunk register  邮箱 '用户名' --description='描述'
# 这里的邮箱和用户名使用github的即可

pod trunk register 12345@163.com 'tt'


# 执行命令后 查收邮件,点击或者复制链接打开即可

pod trunk me   #此时可以看到已注册信息


# cd到项目根目录下,执行上传操作

pod trunk push --use-libraries --allow-warnings


# 成功后使用pod search 查找确认上传成功
# 如果搜索不到或者报错,执行 pod repo update 或者 执行 rm ~/Library/Caches/CocoaPods/search_index.json 删除.json文件再进行搜索 

pod repo update

pod search TRectDetector

至此,创建一个新的iOS项目,在Podfile中添加一行 pod 'TRectDetector' 然后执行 pod install 就能使用了。

 

 

======================= 分割线 ================

进行完第八步,我们的组件就可以通过CocoaPods集成到项目里面了。但是这个组件是对所有人都公开的,如果其中包含一些敏感信息或者只想在公司内部使用,并不想公开,那么可以尝试下面的办法奥(我并没有试过)

所以我们现在的问题就是,怎么创建一个私有的组件,并且可以通过CocoaPods进行管理:

1、还是按照上面的1-7步,唯一区别在于我们不会把代码提交到CocoaPods的公共索引库里。

# 打开资源管理器

open ~/.cocoapods/repos 

这里的master就是CocoaPods默认的索引仓库,它关联的远程索引仓库地址为:https://github.com/CocoaPods/Specs.git

接下来我们创建一个私有的索引库,就取名为MySpec吧

2、创建私有索引库

还是在github上创建一个git仓库吧,复制地址:https://github.com/RainyMask/MySpec.git

3、创建本地索引库并关联

# 执行命令

cd ~/.cocoapods/repos

pod repo add MySpec https://github.com/RainyMask/MySpec.git

这时候repos目录下会多出一个MySpec目录

cd到工程目录下,执行命令

# cd 到工程目录下执行

pod repo push MySpec --use-libraries --allow-warnings

命令成功执行后,可以看到MySpec目录下已经有内容了

4、使用

当然,像我这样已经将组件提交到公共索引库中去了,在pod install 时会有警告信息提示重复存在了

 

然后,针对use_frameworks和图片资源的加载问题,我另起一篇文章做为记录:CocoaPods组件,图片加载问题

 

最后附上TRectDetector链接地址

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值