美文网首页ios
创建自己的cocoapod管理库

创建自己的cocoapod管理库

作者: Dawn_wdf | 来源:发表于2018-01-25 13:37 被阅读36次

    通常情况下,如果项目中使用了cocoapods来管理项目第三方框架,那么在/user/(name)/.cocoapods/repos目录下都会有一个master文件夹用来管理cocoapods中所有的spec文件,像这样

    屏幕快照 2018-01-25 上午11.27.37.png

    cocoapods有自己的一套管理的方式。其在github上的路径为https://github.com/CocoaPods/Specs.git

    当我们执行pod update的时候,通常会先看到

    Update all pods
    Updating local specs repositories
    

    其实这就是去这个路径下更新资源去了。我们使用pod search的时候搜索的内容也都在这里。

    如果我们要让自己的项目支持cocoapods,那么我们做的spec文件实际上也是上传到了这里。

    在实际做项目的时候,可能我们需要将自己项目中的基础框架,甚至是与业务相关的功能封装成一个私有的pod包,比如:自己封装的网络层、会员模块、商品模块等都是单独的一个可独立运行的工程,他们最终都会成为一个pod私有库提供给主工程使用。这个时候我们的项目就需要私有的pod库,私有库中的spec文件不会在cocoapods的master中搜索到,也就是说别人无法使用。

    制作方法

    一:创建自己私有的source index

    第一步是模仿Cocoapods的方式创建一个自己的spec文件的索引,在自己的git上创建一个Git工程CodingSpec,这个名称随意。
    然后执行

    pod repo add CodingSpec [git的目录地址]
    

    CodingSpec这个名称就跟Cocoapods默认的master一样,可以按照自己工程的名称取一个。
    执行完毕后,你会发现在原来的/.cocoapods/repos/目录下会多一个CodingSpec,其实就是将CodingSpec从远端clone到了本地。

    二:创建自己的spec文件

    创建和验证spec跟开源到Cocoapods没有什么区别,网上很多教程。这里简单叙述:

    • 创建好自己的项目,并跟git地址进行绑定
    git init
    git add .
    git commit -m 'init'
    git remote add origin [git url]
    git push -u origin master
    
    • 创建一个podspec文件,并将内容填写完毕
    pod spec create SpecTest
    
    • 设置好tag,这个tag需要跟spec文件中的sorce制定的版本号相同
    git tag 0.0.1
    git push --tags
    git push origin  master
    
    • 验证spec文件
    pod spec lint SpecTest.podspec
    

    同时验证本地和远端
    或者

    pod lib lint
    

    只验证本地
    如果验证出现问题,需要按照提示进行修复。验证通过时会提示

    SpecTest.podspec passed validation.
    

    这里有一点要说明的是,如果远端验证出现了问题,做了修改后需要再次验证,最好可以现将原有的tag删除,提交代码后再创建新的tag。

    git tag -d 0.0.1
    git push origin :refs/tags/0.0.1
    
    • 将spec文件推送到本地索引和远端
      这一步跟开源到Cocoapods有点区别是需要在push后面添加上自己的索引名字CodingSpec,私有库还需要添加资源--sources=
    pod repo push CodingSpec SpecTest.podspec --allow-warnings --use-libraries --sources='http://gitPath.git'
    

    这行命令会再次验证一次spec文件,如果推送成功会提示

    Pushing the `CodingSpec' repo
    
    • 验证一下是否可以正常搜索到
    pod search SpecTest
    

    如果一切正常,这时候应该可以搜索到,不过搜索的结果里面会标明是在Cocoapods中搜索到的。

    三:使用一下看看

    • 创建一个demo工程,配置好Podfile文件
    source 'https://path/CodingSpec.git'
    
    platform :ios, '8.0'
    inhibit_all_warnings!
    target 'SpecTestDemo' do
    pod 'SpecTest', '~> 0.0.1'
    end
    
    • 更新
    pod update
    

    更新的时候如果看输出日志,会发现:repo下创建的所有的资源索引都更新了一下。

    • 打开demo工程运行一下,一切正常。恭喜你,已完成私有库创建。

    后记,在这个过程中也是遇到了一些问题,尤其是在验证spec文件的时候。这个都在网上搜索到了解决方案,因为都是一些常见问题。有关遇到的问题,如果有必要,后续会总结更新。

    PS:当然如果不做本地索引直接在podfile里面
    pod 'SpecTest',:git=>"https://path/SpecTest.git"也是可以的,就是版本控制不知道怎么做

    TIPS:
    提交pod trunk push后,直接搜索如果搜索不到,需要删除索引文件,再搜索,会自动更新索引文件

    rm ~/Library/Caches/CocoaPods/search_index.json
    

    官方TIP:

    • Use pod install to install new pods in your project. Even if you already have a Podfile and ran pod install before; so even if you are just adding/removing pods to a project already using CocoaPods.
    • Use pod update [PODNAME] only when you want to update pods to a newer version.

    相关文章

      网友评论

        本文标题:创建自己的cocoapod管理库

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