iOS开发 - CocoaPods远程私有库从0到1
1. 创建主工程
路径:/Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject/MyMainProject.xcodeproj
2. 在码云(http://git.oschina.net/)上创建一个自己的远程私有索引库,用来存放私有框架的详细描述信息.podspec文件

3. 创建本地的私有索引库文件夹,并与远程私有索引库进行关联
3.1 $ pod repo(查看本地已存在的索引库)
master
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/Funky/.cocoapods/repos/master
3.2 添加本地私有索引库并与远程私有库
$ pod repo add MyProjectSpec https://git.oschina.net/funky_hs/myprojectspec.git
3.3 再次查看本地已存在的索引库 $ pod repo

4 在代码托管平台码云(http://git.oschina.net/)创建一个用来存放项目基础组件的仓库MyProjectBase

5 快速创建模板测试工程(测试基础组件)
5.1 快速创建模板测试工程 在/Users/Funky/Desktop/CocoaPodRemoteLib路径下
cd /Users/Funky/Desktop/CocoaPodRemoteLib
$ pod lib create MyProjectBase (快速创建)

5.2 填写以上信息后Xcode会自动打开测试工程,在测试模板工程文件夹下,我们可以看到如下:

5.3 用Category去替换Replace.m文件,在回到Example路径下,重新执行pod install操作
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase/Example
$ pod install
此时打开模板测试工程,我们可以看到Pods > Development Pods > MyProjectBase > MyProjectBase > Classes > Category > (.h .m)
我们可以在模板测试工程中进行修改和操作!
6 将上面的模板测试工程,提交到第四步创建的远程代码仓库
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase
$ git status
$ git add .
$ git commit -m'基础组件测试工程'
编辑MyProjectBase 模版工程的MyProjectBase.podspec文件

$ pod lib lint (验证上一步编辑的 MyProjectBase.podspec文件)
如果有ERROR,则需要去一个个修改完成,例如某个Category的.m文件没有正确的引入依赖库等都会造成ERROR,解决好所有的ERROR后,验证结果如下:

这是一个警告,目前也并没有找到合适的解决办法,我们添加 --allow-warnings进行忽略
$ pod lib lint --allow-warnings
此时 MyProjectBase passed validation. 则说明验证通过
$ git status
$ git add .
$ git commit -m '编辑spec文件'
$ git remote add origin https://git.oschina.net/funky_hs/myprojectbase.git (将本地库与远程代码仓库进行关联)
$ git push origin master (提交到远程仓库)
$ git tag '0.1.0' (要与MyProjectBase.podspec文件中的tag值保持一致)
$ git push --tags(将tag提交到远程)
$ pod spec lint --allow-warnings(验证远程是否正确,注意:Username与Password一定要填写正确)
如果 Username与Password 填写不正确,则:
- ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone http://git.oschina.net/funky_hs/myprojectbase.git /var/folders/d_/1bsk9q6n63zgbj5cwjg4m_wr0000gn/T/d20170427-3621-13rl3wf --template= --single-branch --depth 1 --branch 0.1.0
MyProjectBase.podspec passed validation.
表明验证通过
7 将podspec文件提交到本地的私有索引库
$ pod repo

$ pod repo push MyProjectSpec MyProjectBase.podspec

表示提交成功,此时远程私有库到此就已结束
注意:提交后,依然会验证 podspec文件,验证通过后 会自动上传到在远程spec索引库,不信的话你可以看看在第二步创建的Spec远程私有索引库,是不是多了一个MyProjectBase/ 0.1.0文件!
8 主工程利用Pods使用我们自己的私有框架
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject
$ pod init
用Xcode打开编辑Podfile文件

$ pod install
打开MyMainProject.xcworkspace,此时在pod中可以找到远程私有库的代码
9 添加及修改基础组件内容
如下图:

在本地的基础组件的Classes路径下 又新增了两个文件夹(Base,Tool)
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase
编辑MyProjectBase 模版工程的MyProjectBase.podspec文件

$ git status
$ git add .
$ git commit -m'新增Base,Tool文件内容'
$ git push origin master (提交到远程)
$ git tag '0.2.0'
$ git push --tags
$ pod repo push MyProjectSpec MyProjectBase.podspec
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject
修改Podfile文件

$ pod install
10 在基础组件MyProjectBase内部生成子库
问题描述:当我们执行完第九步后,我们发现主工程的Pods中并没有按文件夹(Base,Category,Tool)进行不同类的划分,同时当我们仅仅想引入一个Category库时,连同Base,Tool也引入进项目中,这就太恶心了!
参照AFNetworking

修改MyProjectBase.podspec文件

$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyProjectBase
$ git status
$ git add .
$ git commit -m'生成子库文件夹'
$ git push origin master (提交到远程)
$ git tag '0.2.0'
$ git push --tags
$ pod repo push MyProjectSpec MyProjectBase.podspec
$ cd /Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject
修改Podfile文件

$ pod install
就现在 快打开主工程看一看吧!
有不理解或者发现博主存在理解操作不正确的地方,欢迎评论,我会及时修正!
iOS开发 - CocoaPods远程私有库从0到1的更多相关文章
- iOS组件化开发一远程私有库的升级(三)
一.远程私有库的升级 1. 把新增的类 拖入到 classes 文件夹中 : 2. 修改 pod.spec 文件的 s.verson = ‘0.2.0': 二.更新远程仓库 1.cd 到本地仓库的位置 ...
- 搭建CocoaPods远程私有库
1.创建自己的远程私有索引库,用来存放私有框架的.podspec文件,并将其添加到本地索引 我用的仓库是码云(https://gitee.com),用自己的账号新建一个私有仓库,我命名为Private ...
- iOS开发 - CocoaPods的常见使用方式
1 CocoaPods 的安装 1.1 作用: 帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用 1.2 理解: 1. ...
- iOS 组件化开发之使用CocoaPod制作自己的远程私有库
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...
- iOS开发拓展篇—静态库
iOS开发拓展篇—静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 ...
- 【转】iOS开发拓展篇—静态库
原文网址:http://www.cnblogs.com/wendingding/p/3893095.html iOS开发拓展篇-静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码 ...
- iOS代码组件化--利用cocoaPods创建私有库
如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的 ...
- iOS组件化开发一远端私有库建立(二)
公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 1.构建名称为LuckTimeSpec,选择私有建立: 2.Copy地址的https 链接: 二.打开终端 输入: cd /Users/zha ...
- 远程私有库的创建 pod 组件化
参考: http://www.cnblogs.com/hs-funky/p/6780203.html http://www.jianshu.com/p/4b63dfbd8be7 http://ww ...
随机推荐
- Android开发中高效的数据结构
android开发中,在java2ee或者android中常用的数据结构有Map,List,Set,但android作为移动平台,有些api(很多都是效率问题)显然不够理想,本着造更好轮子的精神,an ...
- 2017-2018-1 20179215《Linux内核原理与分析》第六周作业
一.实验部分:使用gdb跟踪分析一个系统调用内核函数(上周选择的那一个系统调用). [第一部分] 根据要求完成第一部分,步骤如下: ①更新menu代码到最新版 ②在原有代码中加入C函数.汇编函数 in ...
- 使用Visual Studio进行单元测试-Part4
本文主要介绍Visual Studio(2012+)单元测试框架的一些技巧: 如何模拟类的构造函数 优化代码,便于测试 一.如何模拟类的构造函数 1.1 被测代码 基础代码,IShape分别有Rect ...
- kudu安装以及kudu的坑
本文描述的是kudu在cloudera的安装. 首先cloudera 5.11.1版本尽管可以直接在add Services中看到kudu,但是其实并没有集成parcels,而且也不想kafka提示需 ...
- shell ## %% 使用说明
path='apps/home/usr/app/test.txt' a=${path##*/} b=${path#*/} c=${path%%/*} d=${path%/*}············· ...
- 服务器FTP配置
一.如果没有安装FTP服务器,安装如下: 二.添加SSL证书 三.给证书起一个有意义的名字就可以了 四.FTP SSL设置 五.FTP 身份验证: 进入-如果开启自己需要的-我这里是需要用户输入密码 ...
- 问题7:如何实现用户的历史记录功能(最多n条)
实例:制作猜字游戏,添加历史记录功能,显示用户最近猜过的数字 解决方案:使用容量为n的队列存储历史记录 使用标准库colections中的deque,一个双端循环队列 程序退出前,可以使用pickle ...
- DCloud-MUI:Hello mui
ylbtech-DCloud-MUI:Hello mui MUI-最接近原生App体验的前端框架 1. 返回顶部 1. MUI-最接近原生App体验的前端框架 极小 100k的js文件,60k的css ...
- stm32与三菱PLC通信
一.三菱PLC通讯概要 三菱PLC FX系列通信结构如下图所示: 三菱PLC FX系列的通信规格如下图所示: 三菱PLC FX系列一般有以下几种通信模块,以FX2N为例: FX2N-232-BD ...
- python 字典 get 小例子
语法 get()方法语法: dict.get(key, default=None) 参数 key -- 字典中要查找的键. default -- 如果指定键的值不存在时,返回该默认值值. 返回值 返回 ...