美文网首页iosiOS学习
cocoapods私有仓库创建+维护

cocoapods私有仓库创建+维护

作者: LYPC_下里巴人 | 来源:发表于2017-06-14 14:16 被阅读116次

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

    相关文章

      网友评论

        本文标题:cocoapods私有仓库创建+维护

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