一.创建私有库的流程简介
- 创建一个项目,留着后面的流程3制作私有库
- 在可以创建私有库的地方创建一个code repository, code repository是代码仓库,我们把代码上传到这个仓库。
- 在可以创建私有库的地方创建一个spec repository, spec repository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓库。这个仓库只用来存放podspec文件,不存放代码。
- 克隆code repository到本地并添加私有库代码文件,上传所有文件到远端的库中并打tag
- 创建并编辑三个私有库配置文件:创建和编辑README.md、创建和编辑LICENSE、创建和编辑podspec文件(验证podspec文件是否正确,如果有问题要确保更改完成,否则无法继续进行 )
- 创建本地的私有仓库文件
- 将配置文件push到远端专门存储配置文件的仓库中
- 确认已经制作完成并使用
二.创建的详细流程
1.创建一个项目,留着后面的流程3制作私有库
1)在这里我们选择用Cocoa Touch Static Library创建一个新的工程,取名为JXTool
2)删除掉默认的.h和.m文件,加入自己已经准备好的工具类,最后主要就是用这个工具类去制作的私有库,这里简便起见就只是执行打印了
#import <Foundation/Foundation.h> @interface logTest : NSObject
- (void)test;
@end
#import "logTest.h" @implementation logTest
- (void)test {
NSLog(@"test111111");
}
@end
2.在可以创建私有库的地方创建一个code repository(代码仓库), 一个spec repository(配置仓库)
这里我使用的是gitlab,除了gitlab之外还可以使用github(私有需要收费) 、开源中国、CODING、Bitbucket、CSDN code都可以,但这里使用gitlab来介绍所有的操作
1)点击右上角的加号按钮,创建代码仓库名为JXCodeRep
2)同上面方法,创建配置仓库名为JXSpecRep,所以此时除了名字不同外,其他都一样 .所以这里建议使用不同的仓库名字来区别这两个不同作用的仓库
3.克隆code repository到本地并添加步骤1中的私有库代码文件,上传所有文件到远端的库中并打tag
1)打开git管理工具SourceTree,点击新建按钮,选择从URL克隆选项,将上面的远程代码仓库地址复制进去,选择好自己的目标路径和名称后点击克隆
2)这时候第一次克隆下来的文件夹是没有东西的(这里不算隐藏文件)
因此别忘了按照gitLab官网进行下面操作,打开终端,在默认的路径下就行
3)拉取远程代码仓库,将我们之前步骤1中建立好的整个项目全部拖进这个文件夹替换README.md
4)进入SourceTree,点击文件状态,将所有的改动全选后提交,再推送到git服务器.将你需要某次修改打上一个tag 1.0,作为一个库的修改版本.注意::别忘了,勾选上"推送标签",这个非常重要
4.创建并编辑三个私有库配置文件
1)创建和编辑README.md、创建和编辑LICENSE(我在这里就不创建这两文件了,只是简单说下创建方法)
这个文件在github中也有,是项目的说明文件,根据自己的项目做一些说明.打开终端,cd到工具类文件所在的路径下
2)创建和编辑.podspec文件(这步最容易出错)
打开终端输入
cd ~/
为了后续私有库的维护,建议名字和工具类所在项目名一样,进入到根目录后创建一个名字叫JXTool.podspec的文件
pod spec create JXTool
准备通过vim进行编辑
vim JXTool.podspec
先别按下 i进入编辑模式,清空全部内容
:%d
内容清空后点击i 进入编辑模式,输入以下内容
Pod::Spec.new do |s|
s.name = "JXTool"
s.version = "1.0" #当前版本
s.summary = "JXTool a hello " #描述
s.homepage = "http://git.op.xywy.com/liunian/JXCodeRep.git" #库文件主页地>址
s.license = 'MIT'
s.author = { 'liunian' => 'liunian@xywy.com' } #开发者
s.source = { :git => 'git@git.op.xywy.com:liunian/JXCodeRep.git', :tag => '1.0' } #文件的git地址,以及当前版本对应的tag,这个1.0就是我刚刚标注的
s.source_files = 'JXTool/JXTool/*' #文件所在的目录,后面*是一个正则表达式,目录我下面会有解释
# s.source_files = 'JXTool/JXTool/*.{h,m}' #文件所在的目录,后面*.{h.m}是一个正则表达式,目录我下面会有解释
# s.resources = 'JXTool/JXTool/*.xib' #资源文件所在的目录图片,xib等,这个demo没有用到
s.framework = 'UIKit' #当前这个库所依赖的系统的库
s.platform = :ios
s.requires_arc = true #是否支持arc
end
退出编辑esc,保存
:wq
3)进入终端后验证.podspec文件是否有效
pod spec lint JXTool.podspec --allow-warnings
有passed validating则表示spec文件验证通过了
5.创建'本地的私有仓库'文件
1)使用下面的命令就可以在本地生成配置文件的仓库,建议这个本地的名字也和远程的一致,这样便于区分和后期的维护.
JXSpecRep 是你远端创建的配置文件仓库的名字,后面是配置文件仓库远端的地址 .
注意此时不需要cd进入任何目录,从默认位置输入这个命令,即在点击终端快捷方式打开的状态下直接输入下面的命令即可
pod repo add JXSpecRep http://git.op.xywy.com/liunian/JXSpecRep.git
2)查看是否添加成功
pod repo list
如果出现了JXSpecRep,则代表添加成功
或者返回桌面command+shift+G查询本地配置仓库管理文件夹
~/.cocoapods/repos
6.将配置文件push到远端专门存储配置文件的仓库中
1)将配置文件push到远端专门存储配置文件的仓库中 ,本地的也会同步更新
此时需要cd进入本地的.podspec所在的路径,默认是根目录,否则会找不到podspec文件
使用下面的命令即可,有问题可以参考报错信息去修改
JXSpecRep 是你创建的spec repository的名字,后面是你本地创建的.podspec文件
pod repo push JXSpecRep JXTool.podspec --allow-warnings
2)出现下面信息,则代表成功
或者查询本地私有spec管理文件夹,看到了JXTool则代表成功
open ~/.cocoapods/repos
3)可以在远端仓库中看到这个文件,并且远端配置文件仓库中有且只有这一个文件
7.确认已经制作完成并使用
1)查询是否有我们需要的私有库
pod search JXTool
2)新建一个项目后,初始化pod
pod init
编辑Podfile文件
vim Podfile
在合适的地方pod我们的私有库
source 'http://git.op.xywy.com/liunian/JXSpecRep.git'
pod 'JXTool', '1.0'
cd到项目的路径下
pod install
3)导入头文件,使用工具类
大功告成!
三.补充
下面主要讲述在同一台笔记本操作,也就是还保留着之前所有相关本地的文件
1.更新私有库
1)参照上面步骤3将私有库克隆下来,然后进行工具类代码的修改,重新提交到远程仓库,并设置标签,例如2.0,即再执行一遍步骤3的1)和4)
修改的地方
#import "logTest.h" @implementation logTest
- (void)test {
NSLog(@"test222222");
}
@end
2)编辑.podspec文件,我这里是同一台笔记本还有原先的文件,所以不用再次创建了,直接编辑
vim JXTool.podspec
修改下面的信息,即所有1.0的地方都修改成最新的标签2.0
Pod::Spec.new do |s|
s.name = "JXTool"
s.version = "2.0" #当前版本
s.summary = "JXTool a hello " #描述
s.homepage = "http://git.op.xywy.com/liunian/JXCodeRep.git" #库文件主页地>址
s.license = 'MIT'
s.author = { 'liunian' => 'liunian@xywy.com' } #开发者
s.source = { :git => 'git@git.op.xywy.com:liunian/JXCodeRep.git', :tag => '2.0' } #文件的git地址,以及当前版本对应的tag,这个1.0就是我刚刚标注的
s.source_files = 'JXTool/JXTool/*' #文件所在的目录,后面*是一个正则表达式,目录我下面会有解释
# s.source_files = 'JXTool/JXTool/*.{h,m}' #文件所在的目录,后面*.{h.m}是一个正则表达式,目录我下面会有解释
# s.resources = 'JXTool/JXTool/*.xib' #资源文件所在的目录图片,xib等,这个demo没有用到
s.framework = 'UIKit' #当前这个库所依赖的系统的库
s.platform = :ios
s.requires_arc = true #是否支持arc
end
后面的步骤依然和之前的一样,参照上面的步骤,参照上面的步骤4.3)
见到JXTool (2.0)极为成功
3)将配置文件push到远端专门存储配置文件的仓库中,参照上面的步骤6
见到上面的则为成功
4)确认已经制作完成并使用
编辑原先测试demo的Podfile文件,pod update之后运行看结果
终于大功告成!!!!
由于我是第一次去主动在gitlab上创建私有库,查了很多资料都不是很详细,看了也是迷糊的很,所以特别抽空研究了一番,结合几篇别人的文章,自动亲手实践,最后整理成这篇笔记,可能对于熟悉创建私有库的人来说废话很多,很冗余,但是真心希望能帮助和我一样的新手,一起学习。
gitLab创建自己的私有库的更多相关文章
-
使用CocoaPods创建自己的私有库-iOS组件化第一步
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...
-
Mac终端的Cocoapods创建自己的私有库和公有库
一,前言 为什么要用Cocopods 通常在开发的过程中,大多时候,我们会处理一类相同的操作,比如对于字符串String的邮箱验证,是否为空,手机号验证,或者一些UIView的动画操作,我们为了避免写 ...
-
composer如何自动验证并获取gitlab的私有库?
近期购买了Laravel的nova以后,需要对它的核心代码做一些修改,为方便与团队其他成员分享,以及在nova官方库更新后方便对差异管理.便将nova库挂在自己的gitlab,通过compos ...
-
iOS:最详细的创建CocoaPods私有库教程
一.感慨 说实话,创建这个CocoaPods私有库,我愣是搞了两个星期,创建的过程中,自己的感情波动是这样的:激情四射---->有点困惑----->极度困惑----->有点失望--- ...
-
iOS组件化开发入门 —— 提交自己的私有库
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...
-
搭建CocoaPods远程私有库
1.创建自己的远程私有索引库,用来存放私有框架的.podspec文件,并将其添加到本地索引 我用的仓库是码云(https://gitee.com),用自己的账号新建一个私有仓库,我命名为Private ...
-
在gitlab上面创建私有库
一.创建私有库1.使用xcode建立新的工程,选择Cocoa Touch Static Library,取名为podTest WechatIMG1172.jpeg 2.创建一个类PodTest,给 ...
-
创建Cocoapods私有库
本文以自己在公司做的一个手势密码私有库GesturePasswordKit为例说明. 1.在gitlab(或者github,我这里使用的例子是在gitlab上)上创建git仓库 (确保授权正确,避免后 ...
-
工具第二天 cocoaPods 私有库的创建
之前介绍了cocoaPods的安装与使用,今天简单谈一下 自己的私有库运用cocoaPods依赖. cd到需要做库的工程目录下 创建一个podspec文件 创建:pod spec create 名称 ...
随机推荐
-
css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)
本文主要通过摩天轮式图片轮播的例子来讲解与css3 3D有关的一些属性. demo预览: 摩天轮式图片轮播(貌似没兼容360 最好用chrome) 3D正方体(chrome only) 3D标签云(c ...
-
Android 编译时注解解析框架
2.注解 说道注解,竟然还有各种分类,得,这记不住,我们从注解的作用来反推其分类,帮助大家记忆,然后举例强化大家的记忆,话说注解的作用: 1.标记一些信息,这么说可能太抽象,那么我说,你见过@Over ...
-
常用vi编辑命令
在自己的博客里存起来,这么多全记住确实有点难,时不时的翻一翻到是可以的. 摘自:http://www.cnblogs.com/junw_china/articles/1708967.html 光标控制 ...
-
Bootstrap页面布局10 - BS代码
网页中标记代码内容使用code和pre标签 要在HTML中显示标签本来的样子需要转化为实体 在此附上百度的实体字符:http://baike.baidu.com/view/4757776.htm#3 ...
-
关于Liferay所有的能够进行自定义和扩展的东西的总结
非常超级什么有用的东西,amazing. 虽然不是宝宝写的. Fantastic Extension Points - And Where to Find Them
-
android 中文转拼音
/** * 将汉字转换为拼音 * @author Champion.Wong * */ public class Trans2PinYin { private static int[] pyvalue ...
-
Java学习的随笔(2)Java语言的三大特性
1.面向对象的三大特性 面向对象的三大特性主要包括:继承.封装.多态 (1)继承:就是指子类(导出类)获得了基类的全部功能(所有的域和方法). 注:在子类中,想要调用基类的方法可以使用“super. ...
-
【2014 Multi-University Training Contest 3 1002】/【HDU 4888】 Redraw Beautiful Drawings
不easy啊.最终能够补第二个题了.! 顺便说一句:模版写残了就不要怪出题人啊 ~ (这残废模版研究了好长时间才找出错) 题目大意: 有一个n*m的矩阵.每个格子里都将有一个数.给你每一行数字之和和每 ...
-
springmvc3.1.1+hibernate4
上篇介绍了基本的配置,这篇着重介绍与hibernate4整合. 1.web.xml文件中加入spring-hibernate的配置.新的web.xml文件内容如下: <?xml version= ...
-
hdu_4826_Labyrinth_2014百度之星(dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 题意:中文题,不解释 题解:dp搞,第一列只能从上往下走,所以先算出第一列的dp数组,然后开两个 ...