你真的会用 CocoaPods 吗?
CocoaPods 可以说是 iOS 开发应用最广泛的包管理工具,本篇文章主要介绍 CocoaPods 的第三方库是怎样从网络集成到我们本地的项目当中,也是制作私有库、开源库和 iOS 项目组件化的一个知识铺垫。
让我们从一张图片开始:
CocoaPods 工作流程 |
---|
远程索引库
远程索引库里存放的是各种框架的描述信息,这个库托管在 Github 上,地址如下:
github.com/CocoaPods/S…
每个框架下有数个版本,每个版本有一个 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
}
其中 git
字段表示该框架的托管地址,也就是上面时序图中的 远程框架库
。
本地索引库
在 install cocoapods
命令后,需要执行 pod setup
这个命令,pod setup
命令就是将远程索引库克隆到本地来,本地索引库的路径如下:
~/.cocoapods/repos/master
本地索引库和远程索引库的目录一致,结构如下:
本地索引库 |
---|
本地索引文件
当执行 pod search
命令时,如果本地索引文件不存在,会创建这个文件。
tianziyaodeMacBook-Air:~ Tian$ pod search afn
Creating search index for spec repo 'master'..
如果这个文件存在,则会在此文件中进行索引,确认所需要的框架是否存在,本地索引文件的路径如下:
~/资源库/Caches/CocoaPods
制作 CocoaPods 库
上面的流程清楚以后,制作 CocoaPods 库相信应该不会太难了,大致分为以下几步:
- 托管框架源码到 Git;
- 创建框架描述信息;
- 上传框架描述信息到
https://github.com/CocoaPods/Specs
; - 命令行
pod setup
, 创建本地索引库; - 命令行
pod install
,将框架集成到项目中;
现在开始动手吧!首先在桌面新建一个 testLib
目录,在该目录下新建一个 Classes
目录,用来存放框架源码,然后将 testLib
托管到 Git。
你可以给 Classes 目录任意的命名,Classes 只是一种约定俗称的命名。
pod spec
pod spec
命令用于创建框架的描述信息文件,文档如下:
guides.cocoapods.org/syntax/pods…
现在在 testLib
目录下执行:
pod spec create testLib
目录下会创建一个 testLib.podspec
文件,然后编辑这个文件,主要有以下几个字段:
- version:这个 spec 映射的版本,保证 Git 的
releases
与此对应; - homepage:项目主页;
- source:框架源代码的托管地址;
- tag:与 version 对应;
- source_files:框架源代码的目录、文件、文件类型等规则;
CocoaPods 公开库
根据上面的步骤,现在你需要将生成的 testLib.podspec
文件上传到远程索引库,在此之前,你需要注册一个 Trunk 账号,文档如下:
guides.cocoapods.org/making/gett…
现在执行下面的命令,记得修改邮箱昵称描述等:
pod trunk register ziyao.tian@gmail.com 'Tian' --description='macbook air'
你的邮箱会收到一封邮件,打开邮件里面的链接,会有类似 you can back termainal
的提示,现在回到终端。
pod lib lint
检查 testLib.podspec
的合法性,根据错误提示修复问题,当显示 passed validation
后,执行下面的命令:
pod trunk push testLib.podspec
提示信息如下:
Updating spec repo `master`--------------------------------------------------------------------------------�� Congrats
相关文章:

【spring 5】AOP:spring中对于AOP的的实现
在前两篇博客中,介绍了AOP实现的基础:静态代理和动态代理,这篇博客介绍spring中AOP的实现。 一、采用Annotation方式 首先引入jar包:aspectjrt.jar && aspectweaver.jar applicationContext配置文件: <span…

通过BeanShell获取UUID并将参数传递给Jmeter
有些HTTPS请求报文的报文体中包含由客户端生成的UUID,在用Jmeter做接口自动化测试的时候,因为越过了客户端,直接向服务器端发送报文,所以,需要在Jmeter中通过beanshell获取UUID,并能将参数传递给Jmeter&…

Hadoop集群搭建(四:Zookeeper环境安装)
实验 目的 要求 目的: 1、掌握在完全分布模式的整合平台中Zookeeper的完全分布模式的安装 要求: 完成Zookeeper的完全分布农事的安装;Zookeeper服务能够正常启动和连接;Zookeeper控制台能够正常进入;Zookeeper控制台命…
史上第二走心的 iOS11-Drag Drop 教程
原文链接:www.jianshu.com只需完成个人实名注册,即可获得腾讯云免费套餐!云服务器CVM、云数据库 MYSQL、文件存储 CFS.....应有尽有!https://cloud.tencent.com/act/free 话不多说,先上效果图 普通view拖拽效果 TableV…

指针的各式定义
1,一个整形数: int a; 2,一个指向整形数的指针: int *a; 3,一个指向指针的指针,它指向的指针指向一个整形数: int **a; 4,一个有10个整形数的数组: int a[10]; 5&#…

AS 400 常用命令
转自:http://blog.chinaunix.net/uid-22375044-id-3049793.html 一、命令技巧 命令构成: CRT* (Creat) 创建 WRK* (Work With) 操作 RMV* (Remove) 去除 DSP* (Display) 显示 ADD* (Add) 添加 CHG* (Change) 改变 DLT* (Delete) 删除 CFG* (Config) 配置…

Hadoop集群搭建(五:Hadoop HA集群模式的安装)
实验 目的 要求 目的: 1、Hadoop的高可用完全分布模式的安装和验证 要求: 完成Hadoop的高可用完全分布模式的安装;Hadoop的相关服务进程能够正常的启动;HDFS能够正常的使用;MapReduce示例程序能够正常运行;…
iOS开发业界毒瘤 Hook
原文地址 为什么有这篇博文 不知道何时开始iOS面试开始流行起来询问什么是 Runtime,于是 iOSer 一听 Runtime 总是就提起 MethodSwizzling,开口闭口就是黑科技。但其实如果读者留意过C语言的 Hook 原理其实会发现所谓的钩子都是框架或者语言的设计者预留…

常用rsync命令操作梳理
作为一个运维工程师,经常可能会面对几十台、几百台甚至上千台服务器,除了批量操作外,环境同步、数据同步也是必不可少的技能。说到“同步”,不得不提的利器就是rsync。rsync不但可以在本机进行文件同步,也可以作为远程…

Word英文字符间距太大 中英文输入切换都不行
在Word中输入文字时会遇到这样的情况,就是说中文字符的间距是正常的,但是英文字符间的间距却不正常,总是太宽了,如图: 。 而且这时切换中英文输入都没用,Word的字体设置也正常。后来上网查了下,…

Hadoop集群搭建(六:HBase的安装配置)
实验 目的 要求 目的: 1、HBase的高可用完全分布模式的安装和验证 要求: 完成HBase的高可用完全分布模式的安装;HBase的相关服务进程能够正常的启动;HBase控制台能够正常使用;表创建、数据查询等数据库操作能够正常…

架构师的第一阶段:准备做(Pre-Architecture)
上节说到,做任何事情都可以分为三个阶段:准备做、做、做好。本文,就将进入第一个阶段,准备做阶段。 Pre-Architecture:准备架构 准备架构阶段,最最重要的是弄清楚要做什么东西,即掌握用户需求。…
iOS动画系列之八:使用CAShapeLayer绘画动态流量图
这篇文章通过使用CAShapeLayer和UIBezierPath来画出一个动态显示剩余流量的小动画。 最终实现的效果如下: Paste_Image.png 动态效果图: shapeLayerAni.gif 1. CAShapeLayer 实际中,能够用CALayer完成的任务是比较少的,如果使用这…

hiho_1139_二分+bfs搜索
题目 给定N个点和M条边,从点1出发,到达点T。寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值。 题目链接:二分 最小化最大值,考虑采用二分搜索。对所有的边长进行排序,二分&#x…

Hadoop集群搭建(七:MySQL的安装配置)
实验 目的 要求 目的: 1、掌握MySQL在集群平台中的安装 要求: 完成MySQL的集群版的安装;MySQL集群的相关服务进程能够正常启动;MySQL集群的SQL服务能够作为系统服务开机自动启动;MySQL客户端能够远程连接MySQL集群的…
如何在VMware虚拟机上安装Linux操作系统(Ubuntu)
作为初学者想变为计算机大牛非一朝一夕,但掌握基本的计算机操作和常识却也不是多么难的事情。所以作为一名工科男,为了把握住接近女神的机会,也为了避免当白痴,学会装系统吧!of course为避免把自己的电脑作为牺牲品&am…

cf #363 b
B. One Bombtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a description of a depot. It is a rectangular checkered field of n m size. Each cell in a field can be empty (".") or…
swift-video-generator:图片加音频生成视频及多视频合并库及演示
阅读 80收藏 92017-11-07原文链接:github.com腾讯云学生优惠套餐,985高校学习云计算的主力机型,2G2核,1M带宽系统盘(Linux 50G/Windows 50G)免费赠送50GB对象存储空间还有.cn域名一年使用权!不要…

Hadoop集群搭建(八:Hive的安装配置)
实验 目的 要求 目的: (1)掌握数据仓库工具Hive的安装和配置; 要求: 完成Hive工具的安装和配置;Hive工具能够正常启动运行;Hive控制台命令能够正常使用;能够正常操作数据库、表、…
iOS 富文本编辑工厂, 让书写更简便.
由于最近常用富文本, 在编辑一个富文本时需要操作很多的属性, 书写起来很不方便. 所以我将这些相关属性整理并使用链式方式将它简化了一下. 效果请看下面Demo. 项目工程 实现很简单, 我嘴太笨, 这里就不介绍了, 如有兴趣直接看源码吧. 同时可以通过cocoapods来使用它. pod SJAt…

ORACLE 数据的逻辑组成
数据块(block)Oracle数据块(Data Block)是一组连续的操作系统块。分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。数据块的大小一般是操作系统块大小的整数倍,这样可以避免不…

Java 的zip压缩和解压缩
Java 的zip压缩和解压缩好久没有来这写东西了,今天中秋节,有个东西想拿出来分享,一来是工作中遇到的问题,一来是和csdn问候一下,下面就分享一个Java中的zip压缩技术,代码实现比较简单,代码如下:…

Hadoop集群搭建(九:各服务的启动)
1、查看Zookeeper服务状态,若集群中只有一个"leader"节点, 其余的均为"follower"节点,则集群的工作状态正常 $zkServer.sh status 2、在集群中所有主机上使用此命令,启动Zookeeper服务 $zkServer.sh start…

iOS 后台下载及管理库
说起下载第一个想起的就是ASI。一年前接手的新项目是核心功能是视频相关业务,在修改和解决视频下载相关的问题的时候让我体会到了ASI的下载的强大。后来新需求需要视频后台下载,使用NSURLSession的时候,更加深刻的体会到了ASI的强大好用。后来…

(转) 使用Speech SDK 5.1文字转音频
下载地址: http://www.microsoft.com/en-us/download/details.aspx?id10121 SeppchSDK51.exe 语音合成引擎 SpeechSDK51LangPack.exe 支持日语和简体中文需要这个支持。 SpeechSDK51MSM.exe 如果要将引擎作为产品的一部分发布需要这个。 Sp5TTintXP.exe XP下Mike和…

IE8下面的line-height的bug
当line-height小于正常值时,超出的部分将被剪裁掉转载于:https://www.cnblogs.com/jsingleegg/p/js_ie8.html

Hadoop集群的基本操作(一:HDFS操作及MapReduce程序练习)
实验 目的 要求 目的: 理解HDFS在Hadoop体系结构中的角色;熟练使用HDFS操作常用的Shell命令;了解Hadoop集群MapReduce程序的简单使用;(上传WordCount的jar执行程序;使用WordCount进行MapReduce计算&#x…
iOS实现动态区域裁剪图片
阅读 249收藏 322017-11-29原文链接:github.com想自己动手搭建一个 Discuz 论坛?试试腾讯云上实验室吧https://cloud.tencent.com/developer/labs 裁剪图片功能在很多上传图片的场景里都需要用到,一方面应用服务器可能对图片的尺寸大小有限制…

每天CookBook之JavaScript-062
鼠标进入事件鼠标离开事件<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>062</title> </head> <body> <div><img src"001" alt"001"><img src…

spring + Quartz定时任务配置
<bean id"exportBatchFileTask" class"com.ydcn.pts.task.ExportBatchFileTask"></bean><bean id"readBatchFileTask" class"com.ydcn.pts.task.ReadBatchFileResultTask"></bean><!-- 生成开卡档…