老青菜

CocoaPods - 私有库

2014-10-14

上一篇 我们了解了 CocoaPods 的基本使用,但是更多情况我们需要创建自己私有 Pods 库。

创建私有的 Pods 库的步骤大致如下:
f
.创建私有的Spec Repo。

.创建Pod Lib Repo,并且可以通过git、http(s)协议来访问

.创建Pod Lib 所对应的podspec文件(可以是.json文件),配置相关参数。

.测试配置好的podspec文件有效性。

.向私有的Spec Repo中提交Pod Lib 的podspec。

.在项目中Podfile使用

创建Spec仓库

首页我们得准备一台git 服务器,可以通过 ssh | http(s) 协议访问,这里我使用内网的一台服务器(10.0.30.103 ,并且设置好 ssh免登陆

执行命令:

    #ssh 登陆服务器
    ssh root@10.0.30.103

    #输入密码
    Password:

    #登录成功后,新建一个 spec 仓库目录
    mkdir kdpod-repos.git

    #初始化 git repository
    cd kdpod-repos.git/
    git init --bare

    #输出
    Initialized empty Git repository in /private/var/root/KDPodsRepos/kdpod-repos.git/

这样 Pods 私有库的仓库就建好了。访问的 url : `root@10.0.30.103:~/KDPodsRepos/kdpod-repos.git`

手动添加 spec 仓库到本地,执行以下命令:

pod repo add kdpod-repos root@10.0.30.103:~/KDPodsRepos/kdpod-repos.git

当然也可以 在 Podfile 文件里指定 source ,让 CocoaPods 自动帮我们添加。

source 'root@10.0.30.103:~/KDPodsRepos/kdpod-repos.git'

创建Pods Lib 工程

和创建 Spec 仓库类似,同样需要在 git 服务器上新建一个 lib project 对应的仓库。

执行以下命令:

    #ssh 登录成功后,新建一个 lib 仓库目录
    mkdir KDDataBase.git

    #初始化 git repository
    cd KDDataBase.git/
    git init --bare

    #输出
    Initialized empty Git repository in /private/var/root/KDPodsRepos/KDDataBase.git

这样 KDDataBase 私有库的仓库就建好了。
访问的 url : `root@10.0.30.103:~/KDPodsRepos/KDDataBase.git`

手动 clone 到本地 git-kdpod 文件夹下,执行以下命令:

git clone root@10.0.30.103:~/KDPodsRepos/KDDataBase.git ~/doc/git-kdpod

clone 完成后,我们可以在文件夹里新建IOS项目,或者拷贝已有的项目。

文件介绍:

    license.txt    
    #开源协议

    Podfile    
    #工程需要依赖第三方Pod库,如果不需要依赖,可以不要

    KDDataBase.podspec.json 
    #pods库配置信息,下一步骤需要做的

    KDDataBase 其他文件
    #KDDataBase 工程文件

准备好项目文件以后,提交到git服务器,执行命令:

    # 添加到本地
    git add -A    

    # 提交到本地暂缓区域
    git commit -a -m '这里是注视'

    # 推送到master
    git push origin master

    # 本地新增tag
    git tag 0.0.1

    #推送到master
    git push origin tag 0.0.1

创建 podspec 文件

接下来我们来配置 podspec.json 文件

    # 进入项目根目录
    cd ~/doc/git-kdpod

    # 创建 podspec 文件
    pod spec create KDDataBase.podspec

    # 转成 podspec.json 文件,个人比较喜欢 json 格式
    pod ipc spec LibraryName.podspec  > KDControlKit.podspec.json

编辑 podspec.json,如下:

{
    "name": "KDDataBase",

    // spec 版本
    "version": "1.0.1",
    "summary": "数据库组建,FMDB的二次封装,仿照CoreData提供ORM、升级功能",
    "description": ".修改升级方案,全部新建表,迁移数据,增加降级处理",
    "homepage": "http://www.kuxxxxdi.com/",

    // 开源协议
    "license": {
        "type": "MIT",
        "file": "license.txt"
    },

    // 作者
    "authors": {
        "green": "yqing@xxxxgroup.com"
    },

    // 支持最低平台
    "platforms": {
        "ios": "5.0"
    },

    // spec对应 git url
    "source": {
        "git": "root@10.0.30.103:~/KDPodsRepos/KDDataBase.git","tag":"0.0.1"

    },

    // 源文件,不能和 subspecs 包含重复的文件
    // "source_files": "KDDataBase/*.{c,h,m,mm}",

    // 子spec,分文件夹显示
    "subspecs": [
             {
                "name": "Ability",
                "source_files": ["KDDataBase/Ability/*.{h,m,c,cpp,mm}"]
             },
             {
                "name": "DAL",
                // 依赖 Ability
                "dependencies": {
                                 "KDDataBase/Ability": [

                                     ]
                              },
                 "source_files": ["KDDataBase/DAL/*.{h,m,c,cpp,mm}"]
             },
             {
                "name": "Model",
                // 依赖 Ability
                "dependencies": {
                             "KDDataBase/Ability": [

                                     ]
                              },
                "source_files": ["KDDataBase/Model/*.{h,m,c,cpp,mm}"]
            },
            {
                "name": "DBManager",
                // 依赖 Ability、DAL、FMDB
                "dependencies": {
                        "KDDataBase/Ability": [
                             ],
                        "KDDataBase/DAL": [
                             ],
                         "FMDB": [
                                "2.5"
                            ]
                         },
                "source_files": ["KDDataBase/DBManager/*.{h,m,c,cpp,mm}"]
            }
        ]
}

检测 podspec 文件

执行命令:

pod spec lint KDDataBase.podspec.json --allow-warnings --noclean --sources=root@10.0.30.103:~/KDPodsRepos/kdpod-repos.git ,https://github.com/CocoaPods/Specs
--allow-warnings  
#允许编译警告

--noclean      
#显示lint过程

--sources   
#查找子的Spec的git路径,在依赖私有库的时候会用到,如果依赖私有库,需要指定依赖的私有库的 spec 仓库 url

--verbose     
#显示整个检测过程

如果输出以下日志,表示spec文件验证通过。

KDDataBase.podspec.json passed validation.

提交 podspec 文件

执行命令:

pod repo push kdpod-repos KDDataBase.podspec.json --allow-warnings --use-libraries

--allow-warnings  
#允许编译警告

--use-libraries
#使用静态库的方式编译,默认使用framework 方式编译

输出以下日志,表示 KDDataBase 已经成功添加,另外我们也可以使用 pod search KDDataBase 搜索一下。

    Validating spec
    -> KDDataBase (0.0.1)
        - WARN  | Git sources should specify a tag.
           - WARN  | Git SSH URLs will NOT work for people behind firewalls configured to only allow HTTP, therefore HTTPS is preferred.
        - WARN  | The description is shorter than the summary.

    Updating the 'kdpod-repos' repo

    Already up-to-date.

    Adding the spec to the 'kdpod-repos' repo

     - [Fix] KDDataBase (0.0.1)

私有库使用


Podfile增加如下代码:

source 'git@gitlab.kuaidadi.com:ios-pods/pod-repos.git'
pod 'KDDataBase', '0.0.1'

到此CocoaPods 私有库可以正常使用了,更新比创建更简单。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章