cocoapods私有仓库创建+维护

字数 2929阅读 224

本来写着公司内部用的,很菜,基于公司级别的资料可是不让外泄,遵纪守法的我,今天还是决定公诸于世啦  哈哈哈哈【木有表情】 大部分内容来自于网络搜索和老王的指导,有不足的地方欢迎大家批评指正。(1131991303@qq.com /** 仅限交流编程技术  */)

来个栗子給大家全程重现我的操作步骤,我演示用的这个demo是已经提交通过的,请大家不要在以该名字命名喽,我的demo私有仓库叫做ShareUtils,托管到了git.oschina上,不要问我为啥不放在高大上 又国际化的GitHub上,私有托管要钱 要钱呐,我肯定不用了呀,此处以这个ShareUtils为例说明:

cocoaPods类库管理工具的使用见上一篇文章,这里就不做介绍了哈,也可以百度,万能的度娘无所不知。)

一、使用oschina托管项目

1.创建新项目ShareUtils(私有项目)

1.0注册自己的账号登录之后,选择项目栏,再选择“+新建项目”

<缺图>

1.1填写项目信息

<缺图>

1.2初始项目目录如下

新建项目的目录介绍:

a. .gitignore:文件里面记录了若干中文件类型,凡是该文件包含的文件类型,git都不会将其纳入到版本管理中。是否选择看个人需要;

b. LICENSE:正规的仓库都应该有一个license文件,Pods依赖库对这个文件的要求更严,是必须要有的。因此最好在这里让oschina创建一个,也可以自己后续再创建。此处使用的license类型是Apache License, Version 2.0;

c. README.md:说明文档;

2. clone仓库到本地

a.获取远程地址:可以选择https或ssh两种形式的链接

b.进入本地项目路径,clone仓库到本地;

$cd /Users/LYPC/Documents/PodsDemo

$git clonehttps://git.oschina.net/liuli/ShareUtils.git

操作完成后,oschina上对应的文件都会拷贝到本地,目录结构为:

<缺图>

仓库中的.gitignore文件是以.开头的隐藏文件,因此这里只能看到两个,后续我们的所有文件增、删、改都在这个目录下进行。

三.使用cocoapods管理私有库

整体先说明一下创建一个私有的podspec包括如下那么几个步骤:

1创建并设置一个私有的Spec Repo。

2创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址。

3创建Pod所对应的podspec文件。

4本地测试配置好的podspec文件是否可用。

5向私有的Spec Repo中提交podspec。

6在个人项目中的Podfile中增加刚刚制作的好的Pod并使用。

7更新维护podspec。

注意:以下描述的文件都要放在步骤二.2.b中clone到本地的git仓库的根目录下面!

1.创建添加文件

1.0在本地仓库目录里面添加ShareUtils库的文件目录内容:

创建好之后的目录结构如图:

<缺图>

1.1提交本地仓库中增加的内容

a.提交前保证更新到最新版:$ gitpull

b.添加到仓库管理并提交修改:$ git

add -A && git commit -m "提交类文件及podspec文件"

c.将本地修改的内容提交到远程仓库:$ gitpush origin master

d.确保你所push的代码已经打上"version

tag",也就是给源代码打上版本号标签:

$git tag '1.0.0'  -m "0.0.5"

$git push --tags    #推送tag到远端仓库

2.如何创建xxx.podspec文件

创建命令:pod spec create文件名字

2.0podspec文件内容示例及介绍:

2.0.1文件内容示例修改xxx. Podspec文件内容指导

该文件是ruby文件

以CTCommon.podspec为例,分几个模块介绍修改描述文件:

a.关键字段介绍(不全的地方可以百度查询):

s.name:导入pod后的目录名;

s.version:库的当前版本号,每次有新的更改要修改此版本号;

s.summary:描述介绍;

s.homepage:osChina上面此库的地址(浏览器地址栏复制);

s.license:开源许可证;

s.author:开发人员;

s.ios.deployment_target:配置的target;

s.source:来源的具体路径,是http链接还是本地路径,此处是osChina上面此库的远程地址;

s.xcconfig:Xcode项目配置;

s.subspec 'CTCategory' do |cTCategory|:库里面的目录分支,给'CTCategory'文件起一个别名cTCategory;

requires_arc:是否需要arc

source_files:指定该目录下包含哪些文件

其他可选参数还包括:

dependency:指定依赖,如果依赖的库不存在或者依赖库的版本不符合要求将会报错

libraries:指定导入的库,比如sqlite3

frameworks:指定导入的framework

weak_frameworks:弱链接,比如说一个项目同时兼容iOS6和iOS7,但某一个framework只在iOS7上有,这时候如果用强链接,那么在iOS7上运行就会crash,使用weak_frameworks可以避免这种情况。

b.CTCustomUtils目录:

c.CTThirdPartys目录:

d.LFCGzipUtillity文件目录:

e.Alipay文件目录:

d.WxPay目录:

e.整个库需要的依赖包

f.podSpec文件编写注意事项:

例如写这些路径的文件的时候,都以相对于spec文件所在的同一目录下的路径,

例子:

我的整个框架文件结构:

那我写的路径的时候就这么写:不用写第一级主目录ShareUtils!!!!!

s.source_files ='ShareUtilsFile/*'

s.public_header_files ='ShareUtilsFile/*.h'

s.resource ='Resources/Resources.bundle'

2.1创建自己的podspec文件可以有两个途径:

a.copy上面的podspec文件,或者去github上看有名的第三方里面的podspec文件拷贝,然后修改对应的参数,推荐使用这种方式。

b.cd进入本地仓库根目录,执行创建命令:$ pod spec create CTCommon

命令成功之后图:

创建好podspec文件之后的目录图:

2.3验证本地配置好的podspec文件是否可用

进入本地你的podspec文件路径下,命令:

$ pod lib lint

有些警告是可以忽略的,由于我们的podspec文件里面用到了一些包framework,所以使用命令验证:

$ podlib lint --verbose --no-clean --allow-warnings --use-libraries;

这个验证过程根据依赖的库多少耗时有差异,等待验证合法之后终端显示如下,如果验证失败会提示具体的信息,可按照提示修改你的podspec内容保证没有错误:

验证通过之后提交合法的spec文件到远程仓库:

a.提交前保证更新到最新版:$ gitpull

b.添加到仓库管理并提交修改:$ git

add -A && git commit -m "提交类文件及podspec文件"

c.将本地修改的内容提交到远程仓库:$ gitpush origin master

2.4Spec Repo介绍

Spec Repo是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,它实际是一个Git仓库remote端在GitHub上,但是当你使用了Cocoapods后它会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了,目录结构如下图:

我们现在要创建自己私有的库,因此也需要创建一个类似于master的私有Spec Repo,这样我们才可以在项目中通过pods工具关联到自己的私有类库。

2.5创建私有Spec Repo

命令:$ pod repo add CTCommon  https://coding.net/ct1516/CTCommon.git

命令执行成功之后,进入到你的电脑资源库:~/.cocoapods/repos路径下,可以看到如下目录文件:

至此创建私有Spec Repo完成,使用pod search命令就可以查到我们自己的库了:$ pod search CTCommon

2.6向私有Spec Repo提交podspec

提交命令:

$ pod repopush CTCommon CTCommon.podspec  --use-libraries --allow-warnings

提交成功之后终端显示:

补充:

a.向私有Spec Repo提交podspec报如下错误:

解决方法:

先保证本地已经add了一份私有Spec

Repo源,执行一遍一下add命令:

$ pod repo add CTCommonhttps://coding.net/ct1516/CTCommon.git

然后在执行提交命令。

2.7使用方法和删除本地源

2.7.1直接从本地源查找下载使用

a.在个人项目中的Podfile中增加刚刚制作的好的Pod并使用,可以通过修改版本号选择使用哪一版本的库,注意所选的版本好必须再源里面有,进入~/.cocoapods/repos查看,下图是提交过三个版本的CTCommon框架:

个人项目配置好cocoapods支持之后目录结构:

私有cocoapods修改的podfile文件内容为:(target修改为自己的项目名字)

source 'https://git.oschina.net/ct5621/ShareUtils.git'

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target :DemoAPP do

pod 'ShareUtils', '2.1.0'

end

使用pod下载关联库:

进入项目目录,使用命令:

$ pod install

执行成功之后终端截图:

b.如果有其他合作人员共同使用这个私有Spec

Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可:

$ pod repo add CTCommon https://coding.net/ct1516/CTCommon.git

c.删除一个私有Spec Repo,本机上的项目便不可以再通过pod添加此库

$pod repo remove CTCommon

d.再把它给加回来

$ pod repo add CTCommonhttps://git.oschina.net/ct5621/CTCommon.git

2.7.2从远程仓库查找下载使用

a.跟2.7.1里面的操作方式一致,仅修改podfile文件写法,从远程仓库里面下载:

podfile里面的CTCommon git地址写远程仓库的连接(target改为自己的项目名字)!

b.cd到项目路径,执行$ podinstall:

因为此库为私有库,供别人使用的时候pod install之后会提示输入账号密码,如图,输入有权限的用户名密码即可正常使用:

3.更新维护podspec

3.0clone到本地一份需要改的私有库;

3.1根据需求修改库文件的内容(保证代码无误);

3.2修改podspec文件内容,并修改最新版本号码;

3.3校验podspec文件是否合法:

$ pod lib lint --verbose --no-clean --allow-warnings --use-libraries;

3.4提交修改内容,podspec文件,并打上tag版本号;

3.5向Spec Repo中提交podspec文件;

$ pod repopush CTCommon CTCommon.podspec  --use-libraries --allow-warnings

3.6更新最新的库:

$ pod install

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

未完待续  有时间再写  本人比较懒

急需问相关问题的话发邮件或者发QQ问吧。

推荐阅读更多精彩内容