本来写着公司内部用的,很菜,基于公司级别的资料可是不让外泄,遵纪守法的我,今天还是决定公诸于世啦 哈哈哈哈【木有表情】 大部分内容来自于网络搜索和老王的指导,有不足的地方欢迎大家批评指正。(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.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到远端仓库
创建命令: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问吧。
网友评论