美文网首页iOS学习收录iOS开发征服iOS
模块组件化——私有pod制作详细教程

模块组件化——私有pod制作详细教程

作者: 奈焚摩尔 | 来源:发表于2017-08-18 18:00 被阅读226次

闲话不多说,折腾了半天来和大家分享下私有pod的制作。

制作前的需要准备工作

  1. GitHub或者码云的账号(因为GitHub私有需要收费,接下来的制作我们使用的码云)
  2. Xcode
  3. 终端
在码云上创建两个两个项目,其中一个为私有,另一个是公开的

如下图

屏幕快照 2017-08-18 下午3.52.31.png
屏幕快照 2017-08-18 下午3.56.01.png

名字的话随意,只要你不弄错就可以。

本地创建后续要被共享的Lib工程

1.打开终端cd到你要创建的目录下(方便下我就放在桌面了)
2.然后输入pod lib create &(私有仓库的名字) 命令创建一个待上传的模版,如图

屏幕快照 2017-08-18 下午4.06.55.png

3.之后会有选项对私有的pod库进行一些选择

屏幕快照 2017-08-18 下午4.08.39.png

此处在桌面会生成一个文件夹,包括工程目录及文件介绍。ps:ReplaceMe.m文件为示例文件,可删除。你自己写的文件放在此处

屏幕快照 2017-08-18 下午4.15.06.png

配置 .podspec 后缀文件

s.name : 项目名
s.version : 版本号(需跟后面打 Tag 的值相等)
s.homepage : 项目主页(请注意,这里的地址跟git仓库地址有一定差别,请看清截图示例并区分)
s.license : 开源协议(这里我们选择 MIT )
s.source : Git 仓库地址(第二步所创建的仓库地址)
s.ios.deployment_target : 项目最低支持版本
s.source_files : 具体去那个目录下下载特定共享代码(注意:这里的地址与 .podspec 文件同级目录开始,,示例:PrivateLib/Classes/** /*表示如下目录下的所有文件
s.frameworks :项目所依赖的系统库(如果需要)
s.dependency :项目所依赖的第三方库(如果需要)

屏幕快照 2017-08-18 下午4.23.20.png

标记了红框的请务必记得修改,不然会出现各种奇葩的错误

验证 .podspec文件的格式的正确性

终端cd到该目录,输入

pod lib lint
屏幕快照 2017-08-18 下午4.27.11.png

将本地PrivateLib工程与远程私有 Git 仓库关联

git remote add origin 远程私有仓库地址
git pull origin master --allow-unrelated-histories
拉去数据的时候会出现冲突,我们把head里的删掉,保留远程的
git add .
git commit -m "fix"
git push origin master
屏幕快照 2017-08-18 下午4.30.17.png 屏幕快照 2017-08-18 下午4.30.57.png 屏幕快照 2017-08-18 下午4.32.54.png

做完了这几步我们在码云中的私有项目可以看到如下图所示


屏幕快照 2017-08-18 下午4.34.38.png

然后本地和远程验证文件有效性

pod spec lint

此处会有报错,请不要慌张,那是因为我们没有tag

屏幕快照 2017-08-18 下午4.38.46.png

执行以下代码

git tag -a 0.1.0 -m '0.1.0标签' 
git push –-tags 
pod spec lint 
屏幕快照 2017-08-18 下午4.40.42.png

好了此处一切ok。很关键

上传.podspec到第一个远程私有仓库

1.首先进入 ~/.cocoapods/repos 目录下
2.然后创建一个私有仓库目录
pod repo add $(私有仓库名字) 第一个私有仓库地址

![Uploading 屏幕快照 2017-08-18 下午4.42.54_128717.png . . .]

如下图所示,我们可以看到shirePrivatePodspec文件已经存在了,如果不小心打错了也没关系可以删除的,删除代码如下

pod repo remove (文件名)

3.最后向私有的 PrivatePodspec 远程仓库中提交 .podspec()
终端进入到之前桌面创建的文件,然后推送

屏幕快照 2017-08-18 下午5.13.46.png

4.最后就可以搜索你的私有库了

磕磕绊绊的折腾了一整天,参考了好多的文章,假如你们还有碰到一些问题的话可以参考下一下这几篇文章。写的不好,新尝试模块组件化的人少走点弯路

更新私有库,构建不同版本

1.修改spec文件中的s.version 号;
2.修改更新code,提交code在Sourcetree打新的tag;
3.两步,新增加tag,在桌面创建的文件重新push一遍
4.pod search 验证一下结果;
< font color=#00ffff >##记得重新在地址为桌面创建的私有文件库中输入一下代码</font>

pod repo push shirePrivatePodspec shirePrivateLib.podspec

使用私有库

podfile里面添加如下代码

source'https://gitee.com/shirebella/shirePrivatePodspec.git'   //自己的私有spec仓库
source'https://github.com/CocoaPods/Specs.git' //cocoapods公共spec仓库
target "TableViewTest" do
pod 'shirePrivateLib', '~> 0.1.1'
end

参考资料:

[使用Cocoapods创建私有库]

[创建私有Pods,从小白到老铁]

相关文章

  • 模块组件化——私有pod制作详细教程

    闲话不多说,折腾了半天来和大家分享下私有pod的制作。 制作前的需要准备工作 GitHub或者码云的账号(因为Gi...

  • pod subspec 子模块

    pod私有库创建详细教程pod私有库搭建完成后,给私有库创建子模块如图的形式 一、修改文件夹结构 二、上传改动到远...

  • 私有CocoaPods库使用一

    目的 私有pod库引用私有pod库或静态库 使用场景 项目组件化, 工具组件化很好实现, 但是业务组件化就没那么容...

  • iOS组件化踩坑

    之前写过一片组件化和创建私有pod的文章组件化和私有pod源仓库,这几天碰到一个比较庞大的项目,终于有机会来真正的...

  • iOS - Pod私有库与私有库关联

    看到这一步想来大佬们已经实现了Pod私有库制作了。那么这里直接进入主题。当我们做组件化亦或模块化开发。肯定会有li...

  • 制作CocoaPod依赖库

    随着模块化的盛行,使用cocoaPod制作私有库,将代码模块化解耦已是大项目代码管理的所需。制作私有库,代码模块化...

  • 制作私有Pod,坑来坑去

    先说说私有Pod制作中的两个坑吧,一个是依赖三方库1.比如说把一个App中的聊天模块制作一个私有Pod,聊天模块需...

  • Target-action 组件化demo

    组件化 组件化就是将模块独立开发,建立pod仓库,通过引入仓库,利用target-action调用模块内的功能。 ...

  • 制作Cocoapods组件库

    一、在制作组件库之前,我们要明白下面几点的概念,后面会上详细的教程 本文讲的是使用私有索引库(我们自己创建)来维护...

  • 私有Pod的搭建-完美流程

    用途:私有pod无论是抽取项目共有库还是项目组件化都很好用,可以达到模块解耦和依赖关系明确的目的。方便团队合作开发...

网友评论

  • sj1910:你好,我想问一下为什么我的 pod search shirePrivateLib 结果是
    [!] Unable to find a pod with name, author, summary, or description matching `shirePrivateLib
    但是我的 ~/.cocoapods/repos 下已经找到了shirePrivateLib,我也把shirePrivateLib推到了shirePrivatePodspec下面了。你的shirePrivatePodspec是私有库还是公开的,上下文不一致
    奈焚摩尔:@sj1910 pod repo push shirePrivatePodspec shirePrivateLib.podspec 这句代码不是在~/.cocoapods/repos这个地址执行的 先cd到桌面之前创建的文件在执行这一句
    sj1910:@奈焚摩尔 我的工程里shirePrivateLib.podspec文件里 s.homepage = 'https://git.oschina.net/xxxxx/shirePrivatePodspec'
    终端
    cd ~/.cocoapods/repos
    pod repo add shirePrivatePodspec https://git.oschina.net/xxxxx/shirePrivatePodspec.git
    pod repo push shirePrivatePodspec shirePrivateLib.podspec
    输出的和你截图一样的,你的是这样推送吗?
    奈焚摩尔:你检查下你推送podspec的地址路径是否弄错了

本文标题:模块组件化——私有pod制作详细教程

本文链接:https://www.haomeiwen.com/subject/wqugrxtx.html