2018-12-02. CocoaPods 使用

https://blog.csdn.net/jiankeufo/article/details/79362660

这片文章中主要包括

1:CocoaPod的安装

2:CocoaPods的日常使用

3:创建CocoaPods的私有库

4:创建CocoaPods的开源库

一 CocoaPods的介绍

CocoaPods 依赖ruby环境,iOS 或MAC的第三方管理工具。

官方博客:http://blog.cocoapods.org/CocoaPods-1.0/

CocoaPods App 1.0 的下载地址:https://cocoapods.org/app

二 CocoaPods的安装

1:替换ruby源

    1:查看ruby的版本     ruby -v

    2:查看ruby源:gem sources -l

    3:更换ruby源: 

            移除: gem sources --remove https://rubygems.org/ 

            更换:gem source -a https://gems.ruby-china.org

    4:升级Gem包(管理Ruby库和程序的标准包): sudo gem update --system

   2:CocoaPods的安装

        1:OS X 10.11 以前安装命令为:sudo gem install cocoapods// 安装cocoapods

        2:Mac系统为OS X EL Capitan安装命令为

            1:安装最新版本 sudo gem install -n /usr/local/bin cocoapods

            2:安装指定版本 sudo gem install -n /usr/local/bin cocoapods -v 1.0.0

            3:安装最新的release beta版本 sudo gem install -n /usr/local/bin cocoapods --pre

    3:卸载 CocoaPods

        sudo gem uninstall cocoapods

    4:更新Podspec的索引文件

        1:查看是否安装成功 pod --version

        2:pod setup 将所有第三方的Podspec索引文件更新到本地的~/.cocoapods/repos目录下

    Podspec: 实际上是第三方的描述文件。

所有的第三方开源库的Podspec文件都托管在https://github.com/CocoaPods/Specs

我们需要把这个Podspec文件保存到本地,这样才能让我们使用命令pod search 开源库搜索一个开源库,怎样才能把github上的Podspec文件保存本地呢?那就是 pod setup

三 CocoaPods的使用

1:到工程目录下面

2:在终端中执行pod init 

3:打开Podfile文件在其中编写需要下载第三方 


简单podfile
复杂的podfile

3.Podfile的基本语法

    1:platform: '7.0' 

        指定了开源库应该被编译在哪个平台以及平台的最低版本

        若不指定平台版本,官方文档里写明各平台默认值为iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0

    2: inhibit_all_warnings!

        屏蔽cocoapods库里面的所有警告

        这个特性也能在子target里面定义,如果你想屏蔽某pod里面的警告也是可以的:

        pod 'JYCarousel', :inhibit_warnings => true

    3:use_frameworks!

        使用frameworks动态库替换静态库链接 

            (1)swift项目cocoapods 默认 use_frameworks!

            (2)OC项目cocoapods 默认 #use_frameworks!

    4. workspace 

        指定应该包含所有projects的Xcode workspace.

        如果没有显示指定workspace并且在Podfile所在目录只有一个project,那么project的名称会被用作于workspace的名称

    5.project

        默认情况下是没有指定的,当没有指定时,会使用Podfile目录下与target同名的工程:(我们只有一个工程JYCocoaPodsTest)

        # JYCocoaPodsTest这个Target只有在JYCocoaPodsTest工程中才会链接

        target 'JYCocoaPodsTest' do

        project 'JYCocoaPodsTest'

        ...

        end

        5. target 'xxxx' do

            ** end**

            指定特定Target的依赖库

            可以嵌套子Target的依赖库

        6. inherit! :search_paths

            明确指定继承于父层的所有pod,默认就是继承的

        7. source

            指定specs的位置,自定义添加自己的podspec。公司内部使用

              cocoapods 官方source是隐式的需要的,一旦你指定了其他source 你就需要也把官方的指定上

            例如

            source 'ssh://git@gitlab.9ijx.com:9830/iOS/Specs.git'

            source 'https://github.com/CocoaPods/Specs.git'

            当我们使用pod install或者pod setup时,会自动在~/.cocoapods/repo目录下更新项目需要的podspec索引文件如下:

4. 依赖库的基本写法:

    

5. 依赖库的自定义写法

    下面都会用到podspec文件,所以要熟悉这个文件的构成才可以.

        Using the files from a local path (使用本地文件)

            pod 'JYCarousel', :path => '/Users/Dely/Desktop/JYCarousel'

            

        


podspec

            4.进入项目根目录进行安装pod install

    From a podspec in the root of a library repository (引用仓库根目录的podspec)

    

From a podspec in the root of a library repository

需要特别注意的是,虽然这样将会满足任何在Pod中的依赖项通过其他Pods

但是 podspec必须存在于仓库的根目录 中,如果根目录中没有存在这个podspec文件,你将不得不使用下面提到的几种方式之一

    From a podspec outside a spec repository, for a library without podspec(在一个不带podsepec的库里引用外部的spec)

    如果一个podspec能够从外部的仓库源的获取,设想一下,也通过HTTP来获取podspec:

    

离线


pod spec

    使用一个在给定podspec中声明的Pod的依赖项。如果如果没有参数被传递,那么在Podfile根部的第一个podspec会被使用。它将会被库所在的工程所使用

    

pod

五. CocoaPods的说明

    1、第三方库会被编译成.a静态库或者.framwork的动态链接库供我们真正的工程使用。

    CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。

    对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。

    2、我们的工程和第三方库所在的工程会由一个新生成的workspace管理

    为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的JYCocoaPodsTest.xcworkspace文件。

    3、原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。

    4、CocoaPods通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容