iOS开发 - CocoaPods的常见使用方式
1 CocoaPods 的安装
1.1 作用:
帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用
1.2 理解:
1.2.1 什么是gem
Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。
1.2.2 常用命令
$ gem --version (查看gem版本)
$ gem update --system(更新gem)
$ gem sources(查看数据源)
$ gem sources --remove https://rubygems.org/(删除数据源)
$ gem sources -a https://ruby.taobao.org/(添加数据源)
$ gem search 软件包关键字(搜索软件包)
$ gem install 软件包名称(安装软件包)
$ gem install cocoapods --pre(安装上一个版本软件包)
$ gem uninstall 软件包名称(卸载安装包)
注意: 以上命令最好在使用之前, 都添加sudo,代表以管理员身份运行该命令,因为有可能安装软件包的过程当中, 需要创建文件等等, 必须有管理员权限才能操作
1.3 安装:
$ sudo gem install cocoapods
- 执行完这句如果报告以下错误:
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out
connect(2) (https://rubygems.org/latest_specs.4.8.gz)
ERROR: Possible alternatives: cocoapods
则需要更新一下ruby的源
$ gem sources (查看当前ruby的源)
$ gem sources --remove https://rubygems.org/ (删除数据源)
$ gem sources -a https://ruby.taobao.org/ (添加数据源)
- 如果gem太老,可以尝试用如下命令升级gem
$ sudo gem update --system(注解: sudo 是以超级管理员的身份操作)
升级成功后会提示: RubyGems system software updated
然后重新执行安装下载命令
$ sudo gem install cocoapods
验证成功:$ pod --version
接下来进行安装,执行:
$ pod setup
- 升级到10.11, CocoaPods报错: command not found, 解决方案
$ sudo gem update --system
$ sudo gem uninstall cocoapods
$ sudo gem install -n /usr/local/bin cocoapods
随后如果出现下列错误
[!] An error occurred while performing `Git pull` on repo `master`.
[!] /usr/bin/git pull --ff-only
原因: Cocoapods的分支不支持当前最新的Xcode版本
解决办法: 删除master分支 重新建立新的分支
$ sudo rm -fr ~/.cocoapods/repos/master
$ pod setup
2 CocoaPods 的简单使用
2.1 步骤
1> Xcode新建一个项目,名字Test
2> 终端中,cd到项目总目录(注意:包含Test.xcodeproj的那个目录)
3> 执行命令 $ pod init 建立Podfile配置文件
4> 打开podfile文件,不要选择文本编辑打开方式,选择Xcode打开,编辑文件如下

5> 执行 $ pod install 现在打开项目不是点击 Test.xcodeproj了,而是点击 Test.xcworkspace
2.2 说明
生成的重要文件Podfile.lock 用来记录着上一次下载的框架版本
2.3 pod install 和 pod update 区别
install 如果Podfile.lock文件存在, 直接从此文件中读取框架信息下载安装,如果不存在, 依然会读取Podfile文件内的框架信息
update 不管Podfile.lock是否存在, 都会读取Podfile文件的的框架信息去下载
主要区别在于, Podfile文件内的框架信息, 版本描述没有指定具体版本
3 上传框架到CocoaPods
3.1 CocoaPods机制图解

3.2 上传框架到CocoaPods
1> 创建库工程, 添加源文件到Classes文件夹,文件路径 /test/Classes/Person.h Person.m文件
2> 在远程github上创建仓库用来存放此库工程

3> 创建git并与远程仓库进行关联
$ cd /Users/Funky/Desktop/test
$ git init(创建git)
$ git add .(添加到暂存区)
$ git commit -m 'create Person Class’ (提交文件)
$ git remote add origin https://github.com/funkyHS/testPerson.git (关联远程地址)
$ git push origin master (提交推送到远程)
4> 创建仓库的描述文件test.podspec
$ cd /Users/Funky/Desktop/test
$ pod spec create test(创建spec文件)
生成test.podspec 使用Xcode打开进行编辑

$ git tag (查看tag记录)
$ git tag ‘0.0.1’ (要与test.podspec中的s.version保持一致)
$ git push --tags(提交推送到远程,成功后在远程release处可以看到提交的tag版本)
5> 利用trunk将本地的spec文件上传到pods官方的索引库
$ pod trunk register 1824718008@qq.com 'funky' --verbose (注册trunk)
成功后登陆上面的邮箱去激活 邮件中的地址
$ pod trunk push test.podspec
6> 测试,使用pod search 命令搜索自己的框架, 如果可以搜索到, 那么代表审核通过了
4 CocoaPods本地私有库的使用
需求说明:testProject工程利用pods管理导入使用本地库文件
4.1 步骤:
$ cd /Users/Funky/Desktop/localLib/test
$ git init
$ git add .
$ git commit -m 'create file’
$ pod spec create test
编辑test.podspec文件

$ cd /Users/Funky/Desktop/testProject
$ pod init(生成Podfile文件)
编辑Podfile文件

$ pod install (会验证test.podspec 填写信息是否正确)
成功后打开testProject.xcworkspace项目,库文件在Pods/Development Pods中
5 创建pods库的模版库
(组件化快速生成测试工程常用)
工程文件目录结构:/Users/Funky/Desktop/MyTestProject/testProject/Classes/Categories/(.h .m)
需求:在MyTestProject文件夹下,快速创建关于Categories/(.h .m)的测试工程
5.1 步骤:
1> $ cd /Users/Funky/Desktop/MyTestProject
2> $ pod lib create testProjectQuick

3> 用测试的库文件替换ReplaceMe.m文件

---------------------------------------------

4> $ cd /Users/Funky/Desktop/MyTestProject/testProjectQuick/Example
$ pod install
6 CocoaPods远程私有库的使用
6.1 机制图解

6.2 具体操作步骤
1> 查看本地索引库
$ pod repo
master
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/Funky/.cocoapods/repos/master
2> 在代码托管平台上添加公钥
$ ssh-keygen(生成公钥)
Enter file in which to save the key (/Users/Funky/.ssh/id_rsa): (直接回车)
Enter passphrase (empty for no passphrase): (直接回车)
Enter same passphrase again: (直接回车)
生成的公钥所在路径 ~/.ssh/id_rsa.pub (用Xcode打开并复制)
在coding上添加公钥
3> 添加本地私有的索引库
$ pod repo add TestProjectBase git@git.coding.net:funkyHS/TestProjectSpecs.git
此时在~/.cocoapods/repos 路径下 可以看到TestProjectBase文件夹
4> 查看 $ pod repo
master
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/Funky/.cocoapods/repos/master
TestProjectBase
- Type: git (master)
- URL: git@git.coding.net:funkyHS/TestProjectSpecs.git
- Path: /Users/Funky/.cocoapods/repos/TestProjectBase
5> 然后在代码托管平台上(coding)创建一个TestProjectBase项目,用来存放基础组件的远程代码仓库
$ cd /Users/Funky/Desktop/远程私有库/testProjectQuick (进入到基础组件的模版工程)
$ git status
$ git add .
$ git commit -m ‘模版测试工程'
6> 接着 修改编辑testProjectQuick 模版例子工程的testProjectQuick.podspec文件

$ pod lib lint (验证当前文件夹下的testProjectQuick.podspec文件编辑是否正确)
$ pod spec lint (验证远程的是否正确,此时会报tag ERROR)
$ git status
$ git add .
$ git commit -m '编辑spec文件'
$ git remote add origin https://git.coding.net/funkyHS/TestProjectBase.git (将本地库与远程代码仓库进行关联)
$ git push origin master (提交到远程仓库)
$ git tag ‘0.1.0'
$ git push --tags (将标签提交到远程)
$ pod spec lint (再次验证)
testProjectQuick.podspec passed validation.
$ pod repo push TestProjectBase testProjectQuick.podspec (将podspec文件提交到本地的私有索引库TestProjectBase中: 地址 ~/.cocoapods/repos/TestProjectBase)

注意:提交后,依然会验证 podspec文件,验证通过后 会自动上传到在coding上的远程spec索引库
$ pod search testProjectQuick
-> testProjectQuick (0.1.0)
testProjectQuick简介
pod 'testProjectQuick', '~> 0.1.0'
- Homepage: https://coding.net/u/funkyHS/p/TestProjectBase
- Source: https://git.coding.net/funkyHS/TestProjectBase.git
- Versions: 0.1.0 [TestProjectBase repo]
此时在进入主工程中修改podfile文件

$ cd /Users/Funky/Desktop/远程私有库/MyMainProject
$ pod install
大功告成,打开MyMainProject.xcworkspace,此时在pod中可以找到远程私有库的代码!是不是很开心,很兴奋!
如果对于如何创建远程私有库还有不明白的地方,去看我的下一篇详细介绍的文章《iOS开发 - CocoaPods远程私有库从0到1》
这篇文章对你有所帮助的话,请在我的评论区坐一坐吧!
有不理解或者发现博主存在理解操作不正确的地方,欢迎评论,我会及时修正,以免误人子弟!
iOS开发 - CocoaPods的常见使用方式的更多相关文章
- iOS开发UI篇—常见的项目文件介绍
iOS开发UI篇—常见的项目文件介绍 一.项目文件结构示意图 二.文件介绍 1.products文件夹:主要用于mac电脑开发的可执行文件,ios开发用不到这个文件 2.frameworks文件夹主要 ...
- 【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】
原文:[Xamarin 挖墙脚系列:IOS 开发界面的3种方式] xcode6进行三种基本的界面布局的方法,分别是手写UI,xib和storyboard.手写UI是最早进行UI界面布局的方法,优点是灵 ...
- iOS开发 cocoapods的安装以及使用
一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库(从一个坑出来,又 ...
- 怎样实现IOS开发中的数据存储方式
iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...
- iOS开发CocoaPods使用
一.为什么用CocoaPods iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三 ...
- iOS开发中一些常见的并行处理
本文主要探讨一些常用多任务的最佳实践.包括Core Data的多线程访问,UI的并行绘制,异步网络请求以及一些在运行态内存吃紧的情况下处理大文件的方案等.??其实编写异步处理的程序有很多坑!所以,本文 ...
- iOS开发中一些常见的并行处理(转)
本文主要探讨一些常用多任务的最佳实践.包括Core Data的多线程访问,UI的并行绘制,异步网络请求以及一些在运行态内存吃紧的情况下处理大文件的方案等. 其实编写异步处理的程序有很多坑!所以,本文 ...
- iOS开发 - CocoaPods安装和使用教程
一.CocoaPods简介 1.什么是CocoaPods CocoaPods是iOS的包管理工具. 2.为什么要使用CocoaPods 在开发iOS项目时,经常会使用第三方开源库,手动引入流程复杂,并 ...
- iOS开发-CocoaPods实战
CocoaPods 是开发 OS X 和 iOS 应用程序的第三方库的依赖管理工具,如果是正常的开发不需要使用的第三方的代码,CocoaPods是不需要的,但是从实际情况上,为了提高开发效率,Coco ...
随机推荐
- android实现跑马灯效果
第一步:新建一个新项目,MarqueeTextView 首先为了观察到跑马灯效果,将要显示的文字极可能 写长.在strings.xml目录里面将 <string name="hello ...
- Linux就该这么学--命令集合1(常用系统工作命令)
1.用echo命令查看SHELL变量的值(前面有$符号): echo $SHELL 2.查看本机主机名: echo $HOSTNAME 3.查看当前的系统时间: date 4.按照“年-月-日 时:分 ...
- C#实现(递归和非递归)高速排序和简单排序等一系列排序算法
本人由于近期工作用到了一些排序算法.就把几个简单的排序算法.想冒泡排序,选择排序,插入排序.奇偶排序和高速排序等整理了出来,代码用C#代码实现,而且通过了測试.希望能给大家提供參考. ...
- DNS多出口分析
DNS多出口分问题现象:当dns解析出的ip非域名的本地覆盖组,则怀疑是DNS多出口或者DNS劫持.接下来判断该ip是否为网宿ip,如果不是,则是劫持问题,走劫持流程进行反馈.如果是网宿ip,则用以下 ...
- Tomcat 安装之后,双击Tomcat.exe,无法运行成功,怎么办?
Log形式多种多样,有的时候跟下面一样: 首先的解决方案就是:修改server.xml中所有的端口,因为不只8080端口可能被占用! 我在出问题的时候就修改8080端口.结果死活运行不了,纠结一些时间 ...
- linux下配置jdk+tomcat
安装软件包 下载jdk和tomacat安装包,我这里使用的是jdk-8u144-linux-x64.tar.gz和apache-tomcat-8.5.23.tar.gz. 分别解压这两个安装包,用命令 ...
- hihoCoder2月29日(字符串模拟)
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: ...
- android性能测试工具
Android性能测试工具Emmagee介绍 Emmagee介绍 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系 ...
- C#基础之--线程、任务和同步:一、异步委托
创建线程的一种简单方式是定义一个委托,并异步调用它.委托是方法的类型安全的引用. Delegate还支持异步地调用方法.在后台Delegate类会创建一个执行任务的线程. 为了说明委托的异步特性,从一 ...
- SqlServer自定义数据类型
定义:用户自己设计并实现的数据类型就称为用户自定义数据类型,即使这些数据类型基于系统数据类型. 创建用户自定义数据类型时,必须提供三个数: 数据类型的名称 所基于的系统数据类型 数据类型的可空性(是否 ...