使用CocoaPods的一些仓库说明

原文地址

CocoaPods官网

1、pod使用官网的仓库的关联代码(这些代码需要cocoapods审核通过才能被其他人使用,而且每次稳定的代码版本需要打上tag方便使用者选择对应的tag代码)

上传至cocoapods的公开的 仓库 使用 pod setup 或者 pod install 时会从仓库中下载到本地,存放在电脑的 .cocoapods/repo/master 中,这个仓库是cocoapods团队维护,大部分开源代码都放在这里,当然本地放的只是项目的一些相关信息:

CAIStatusBar.podspec.json

{
  "name": "CAIStatusBar",
  "version": "0.0.1",
  "summary": "A simple indicator",
  "homepage": "https://github.com/apple5566/CAIStatusBar.git",
  "license": "MIT",
  "authors": {
    "apple5566": "zaijiank110@sohu.com"
  },
  "platforms": {
    "ios": "6.0"
  },
  "source": {
    "git": "https://github.com/apple5566/CAIStatusBar.git",
    "tag": "0.0.1"
  },
  "source_files": "CAIStatusBar/**/*.{h,m}",
  "resources": "CAIStatusBar/CAIStatusBar.bundle",
  "requires_arc": true
}

需要使用cocoapods的项目的Podfile文件说明

Podfile:

platform :ios,'8.0'
use_frameworks!
inhibit_all_warnings!

target 'HDDemo' do
    pod 'AFNetworking'
    pod 'MJRefresh'
end

2、pod使用本地路径代码 (不需要经过类似cocoapods审核流程即可使用,本地代码一改,pod update即可获取最新代码,但是一不小心代码地址移动或者删除时,会有问题)

Podfile:

platform :ios,'8.0'
use_frameworks!
inhibit_all_warnings!
target 'HDDemo' do
    pod 'AFNetworking', :path => '~/Documents/AFNetworking'
end

3、pod使用源码地址的代码(每次pod update即可获取给定地址的最新代码,也可以选择指定的tag,源码每次push到git地址后,其他项目即可使用,无审核流程,这种模式属于比较灵活的方式)

Podfile:

platform :ios,'8.0'
use_frameworks!
inhibit_all_warnings!
target 'HDDemo' do
  # 只拉取FDDUITableViewDemoSwift/FDDBaseRepo这个下面的代码, FDDUITableViewDemoSwift.podspec见下面
    pod 'FDDUITableViewDemoSwift/FDDBaseRepo', :git => 'https://github.com/erduoniba/FDDUITableViewDemoSwift.git' ,:tag => '0.1.0'
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'
end

pod update --verbose --no-repo-update 即可拉取最新代码

4、pod使用podspec文件来拉取代码:

Podfile:

platform :ios,'8.0'
use_frameworks!
inhibit_all_warnings!
target 'HDDemo' do
    # 远程podspec地址
    pod 'FDDUITableViewDemoSwift', :podspec => 'https://raw.githubusercontent.com/erduoniba/FDDUITableViewDemoSwift/master/FDDUITableViewDemoSwift.podspec'
    # 本地podspec地址
    pod 'FDDUITableViewDemoSwift', :podspec => '/Users/denglibing/project/harryProject/FDDUITableViewDemoSwift/FDDUITableViewDemoSwift.podspec'
end

FDDUITableViewDemoSwift.podspec

podspec说明

Pod::Spec.new do |s|
    s.name         = 'FDDUITableViewDemoSwift'
    s.version      = "0.1.1"
    s.license      = { :type => 'MIT', :file => 'LICENSE' }
    s.author       = { 'denglibing' => 'denglibing@fangdd.com' }
    s.summary      = 'FDDUITableViewDemoSwift'

    s.platform     =  :ios, '8.0'
    s.homepage     = "https://github.com/erduoniba/FDDUITableViewDemoSwift"

    s.source       =  { :git => 'https://github.com/erduoniba/FDDUITableViewDemoSwift.git', :tag => "#{s.version}"}
    s.module_name  = 'FDDUITableViewDemoSwift'
    s.framework    = 'UIKit'
    s.requires_arc = true

    # Pod Dependencies

    s.subspec 'FDDBaseRepo' do |ss|
        ss.source_files = 'FDDUITableViewDemoSwift/FDDBaseRepo/*'
        ss.resources = ["FDDUITableViewDemoSwift/FDDBaseRepo/Resources/*"]
        ss.dependency 'PullToRefresher'
    end
end

5、pod使用自己的私有仓库来替换cocoapods的仓库,这样同样的不需要审核流程,自己管理所有的 podsepc文件,需要加上tag来拉取指定的代码

使用Cocoapods创建私有podspec

  1. 创建并设置一个私有的Spec Repo。这个仓库你可以创建私有的也可以创建公开的,不过既然私有的Spec Repo,还是创建私有的仓库吧。创建完成之后在Terminal中执行如下命令

    # pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
    $ pod repo add HDPodRepo https://github.com/erduoniba/HDPodRepo.git
    

    此时如果成功的话进入到~/.cocoapods/repos目录下就可以看到 HDPodRepo 这个目录了。至此第一步创建私有Spec Repo完成。

  2. 创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址。

  3. 创建Pod所对应的podspec文件。

  4. 本地测试配置好的podspec文件是否可用。(不合格问题也不大)

  5. 向私有的Spec Repo中提交podspec

    $ cd path/FDDUITableViewDemoSwift.podspec
    $ pod repo push HDPodRepo FDDUITableViewDemoSwift.podspec  #前面是本地Repo名字 后面是podspec名字
    
    # 成功之后
    $ cd /Users/denglibing/.cocoapods/repos/HDPodRepo 
    $ tree
    .
    ├── FDDUITableViewDemoSwift
    │   ├── 0.1.1
    │   │   └── FDDUITableViewDemoSwift.podspec
    │   └── 0.1.2
    │       └── FDDUITableViewDemoSwift.podspec
    └── README.md
    # 私有库自动生成了最新的代码
    
  6. 在个人项目中的Podfile中增加刚刚制作的好的Pod并使用。

    Podfile:

    source 'https://github.com/CocoaPods/Specs.git'          # 官方库地址
    source 'https://github.com/erduoniba/HDPodRepo.git'     # 私有库地址
    
    platform :ios,'8.0'
    use_frameworks!
    inhibit_all_warnings!
    target 'HDDemo' do
         pod 'FDDUITableViewDemoSwift'   # 私有库地址里的FDDUITableViewDemoSwift项目
    end
    

  7. 更新维护podspec

    $ cd anyPath
    $ pod repo remove HDPodRepo #删除本地的私有库
    $ pod repo add HDPodRepo https://github.com/erduoniba/HDPodRepo.git #重新添加私有库地址
    

一些错误:

$ pod lib lint --verbose --no-clean --allow-warnings
We get the error below:

** BUILD FAILED **

The following build commands failed:
CompileSwift normal x86_64 /var/folders/yg/dlxwsn292j108t5qtlmgbtfh0000gn/T/CocoaPods/Lint/Pods/ReachabilitySwift/Reachability/Reachability.swift
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
(2 failures)
...
...
...

Pods workspace available at /var/folders/yg/dlxwsn292j108t5qtlmgbtfh0000gn/T/CocoaPods/Lint/App.xcworkspace for inspection.

[!] Teste did not pass validation, due to 69 errors.

https://github.com/ashleymills/Reachability.swift/issues/146

解决:

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

推荐阅读更多精彩内容