CocoaPods实践

作者: egoCogito_panf | 来源:发表于2016-03-05 13:32 被阅读746次

         最近在学习cocoaPods,在使用cocoaPods的时候遇到一些问题,记录下来,分享给大家,希望多多交流。

    一、简介:

         Cocoapods是OS X和iOS下的一个第三方库管理工具,并且支持Objective-C和swifit语言。通过Cocoapods为项目添加称为"Pods"的依赖库(这些库必须是Cocoapods所支持的),并且轻松实现第三方库的版本管理。

    二、安装cocoaPods:

         这一块不是重点,大概讲讲,CocoaPods用Ruby写的,所以首先安装一下ruby环境,具体操作可以参考http://www.2cto.com/kf/201411/348389.html。然后用淘宝镜像替换cocoaPods.org,并安装cocoaPods,在终端执行:

    gem sources --removehttps://rubygems.org/

    gem sources -ahttp://ruby.taobao.org/

    sudo gem install cocoapods

    至此,cocoaPods安装完成,为验证是否安装成功,可以查看cocoaPods的版本号:

    pod --version

    三、导入第三方公有库:

         cocoaPods最常用的是pod命令,例如搜索AfNetworking在cocoaPods中的所有可用版本,在终端执行:

    pod search AFNetworking

    为了给一个新建项目导入第三方库,需进行如下步骤:

    1、cd到当前工程目录,新建一个podfile文件,在终端执行:

    touch Podfile

    在工程中多了个Podfile文件

    Podfile

    接下来配置Podfile文件,格式如下

    platform :ios, '7.0'

    pod 'AFNetworking', '3.0.4'

    pod 'UIView+Positioning', '1.1'

    pod 'Masonry', '0.6.2'

    例如pod 'AFNetworking', '3.0.4'是指为项目引入3.0.4版本的AFNetworking,终端执行:

    pod install

    执行该命令,cocoaPods默认更新资源库,可以加上--no-repo-update命令禁止更新。执行成功的话,会多出.xcworkspace文件和Podfile.lock文件,打开.xcworkspace,目录中多出Pods工程。点击工程文件,发现每个库都是一个Target。可以在PFHealth工程里面导入第三方库开发了。

    工程目录

    Podfile.lock:该文件用来保存安装的Pods依赖库的版本,当执行完pod install命令后,lock文件会记录当前导入第三方库的版本号及其依赖库的版本号,当再次pod install时,cocoaPods会去取lock文件记录的版本号,而不会去取最新的版本,这对于团队开发很有用。

    pod install命令和pod update命令:一开始我也弄不清它俩的区别,后来试了一下,总结一下:在podfile文件里面编辑

    pod 'AFNetworking'

    执行pod install命令导入的库根据lock文件记录的版本号而定,例如lock文件里面AFN的版本号是2.5.0,则执行pod install命令导入2.5.0的AFN,但是pod update命令不受lock文件制约,会取最新版本的AFN导入项目。另外podfile文件里面可以指定工程中不同target导入不同的第三方库,具体参考https://guides.cocoapods.org/syntax/podfile.html

    四、搭建cocoaPods私有库

    首先讲讲个人对于cocoapods导入第三方库机制的理解,终端执行

    /Users/PF/.cocoapods/repos

    repos目录下有个master文件夹,进入master->Specs,里面存放许多文件夹,对应一个第三方库的名称,里面又维护了若干版本文件夹,每个文件夹里面维护一个podspec.json文件,该文件存有远端github仓库的索引。以下是podspec.json:

    podspec文件

    还有一些字段在这个spec文件没有配置,例如resource_bundles,就不说明了。当执行pod install命令时,会根据podfile文件中列出的库名称及版本号去repos里面查找,然后找到对应的podspec.json,然后根据source和source_files找到github地址去下载。

    1、创建私有Spec Repo

    master文件夹是官方维护的,我们需要创建一个类似于master的repos,管理自己的私有库spec文件,终端执行:

    pod repo add PFSpec https://coding.net/u/panfeng/p/PFBaseSDK

    2、创建私有库项目

    cd到要创建项目的目录并执行

    pod lib create PFBaseSDK

    PFBaseSDK是自定义的私有库项目名称,终端会让你确认5个问题

    What language do you want to use?? [ObjC/ Swift ]

    Would you like to include a demo application with your library? [Yes/ No ]

    Which testing frameworks will you use? [Specta/ Kiwi / None ]

    Would you like to do view based testing? [Yes/ No ]

    What is your class prefix  ->PF

    创建成功后进入demo,打开workspace

    工程目录

    上面是demo工程,在podspec文件中配置一下,s.source_files和s.resource_bundles是私有库源文件、资源文件的地址。下面是Pods私有库工程,在classes文件夹下添加类,例如PFHTTPRequest。写好后cd到demo工程目录下,执行pod install,这样demo里面就可以引入写好的类PFHTTPRequest。

    3、本地验证私有库

    首先验证该项目能否被添加到pod repos中(warning会导致添加失败),终端执行:

    pod lib lint

    PFBaseSDK passed validation表示验证成功,然后将私有库项目push到远端仓库,仓库地址和pod repo add命令后面的仓库地址一致,同时打上tag版本号,例如0.1.3。接下来在本地项目中引入PFBaseSDK,cd到相应工程,修改podfile文件,添加

    pod 'PFBaseSDK', :path =>'~/code/Cocoapods/podTest/PFBaseSDK'

    在终端执行pod install ,此时项目中出现私有库,说明本地引入成功

    导入PFBaseSDK

    4、提交podspec到Repos

    在终端执行:

    pod repo push PFSpec PFBaseSDK.podspec

    将podspec提交到cocoapods的repos->PFSpec目录下,多出PFBaseSDK目录,里面是相应版本号的podspec

    podspec pod search

    终端执行pod search PFBaseSDK,出现相应版本号的私有库,说明已上传至。cd到需要引入私有库的工程目录,修改podfile文件为pod ‘PFBaseSDK’ ‘0.1.3’,终端执行pod install命令,集成0.1.3的PFBaseSDK。

    五、相关参考:

    https://guides.cocoapods.org/syntax/podfile.html

    http://www.cocoachina.com/ios/20150228/11206.html

    http://www.cnblogs.com/brycezhang/p/4117180.html

    相关文章

      网友评论

        本文标题:CocoaPods实践

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