当前位置: 首页 > 编程日记 > 正文

让自己的开源项目支持CocoaPods集成

平时我们会经常用CocoaPods集成第三方库,那如何使自己的代码也可以通过CocoaPods集成呢?只需要简单几步:

  1. 创建git仓库,把代码提交到Github或码云等
  2. 在git仓库中创建.Podspec文件,修改里面的配置(如代码的版本、简介、git仓库地址等)
  3. 将.Podspec提交到CocoaPods
    下面用一个实际例子JXCalendarTool来详细讲解

一、将源代码提交到Github

关于这一步请参考上一篇文章:GitHub与Git入门

二、创建并修改.Podspec文件

cd到项目目录,用以下命令创建<项目名>.Podspec文件

pod spec create JXCalendarTool

此时项目目录中已经创建了JXCalendarTool.Podspec文件
在这里插入图片描述
利用Xcode或Sublime等文字编辑器打开进行编辑。去掉<#>所注释的内容,主要就是配置这些选项:

Pod::Spec.new do |s|s.name         = "JXCalendar"s.version      = "1.0.0"s.summary      = "添加行程到系统日历"s.homepage     = "https://github.com/dolacmeng/JXCalendarTool"s.license      = "MIT"s.author       = { "Jack" => "151611438@qq.com" }s.platform = :ioss.platform = :ios, "7.0"s.source       = { :git => "https://github.com/dolacmeng/JXCalendarTool.git", :tag => "1.0.0" }s.source_files  = "JXCalendarTool", "*.{h,m}"s.frameworks  = "UIKit","Foundation","EventKit"s.requires_arc = trueend
  • s.name: 库的名称。
  • s.version: 版本号。
  • s.summary: 摘要,简要说明开源库的作用。
  • s.homepage: 项目主页地址。
  • s.license: 许可证,不懂就填MIT,具体可以网上查下MIT license。
  • s.author: 作者。
  • s.platform: 支持的最低SDK版本
  • s.source: git地址和对应的tag
  • s.source_files: 包含的文件(根目录的JXCalendarTool文件夹下所有的.h和.m文件)
  • s.framework:依赖的系统库,另外还可能通过设置s.libraries、s.dependency添加lib以及第三方开源库依赖

配置参考:http://guides.cocoapods.org/making/specs-and-specs-repo.html

在s.source中,我们设置了tag => “1.0.0”,也就是我们的代码在Github中的tag。我们需要在git中创建此tag,并提交到Github:

git tag '1.0.0'
git push --tags

此时,Github中便有了tag为1.0.0的分支:
在这里插入图片描述

在这里插入图片描述

三、将.Podspec提交到CocoaPods

  1. 首先我们用pod trunk register <邮箱> '<昵称>'命令注册一个CocoaPods账号
pod trunk register 151611438@qq.com 'jackxu'

在这里插入图片描述
CocoaPods会给注册的邮箱发送email,打开邮箱点击链接进行激活即可。

  1. 使用pod lib lint命令来尝试编译,如果有警告,可以在后面添上–allow-warnings来忽略警告,成功的话会显示passed validation
pod lib lint --allow-warnings
  1. 通过 pod trunk push 库名.podspec --allow-warnings来推送到远程的cocoapods.
pod trunk push JXCalendarTool.podspec --allow-warnings

然后耐心等待成功的消息吧

在这里插入图片描述

四、使用CocoaPods搜索

  1. 虽然此时已经将代码提交到了CocoaPods,但是本地的检索库还是旧的,需要先用以下命令更新CocoaPods本地检索库
pod repo update
  1. 此时再通过命令搜索即可找到我们的库
pod search JXCalendarTool

在这里插入图片描述

  1. 但是有时候,更新了却还是不行,那就清除所有的缓存,重新建立索引。
pod cache clean --all
rm -rf ~/Library/Caches/CocoaPods
pod repo update

此时重新搜索就可以了。

相关文章:

由于客户端检测到一个协议错误 代码0x1104

重新连接N次都还是这个错误提示&#xff0c;最后再重起电脑&#xff0c;还是没用。研究了一下错误终于解决了。 首先检查远程连接端口对不对&#xff1f;Windows远程默认的连接端口是3389&#xff0c;一般大家连接时直接输入IP或域名就可以连接了。如果还要加:端口号的话&#…

使用Fiddler抓取手机HTTP流量包

“ Fiddler手机流量抓包实战。”Fiddler作为一个PC端的HTTP/HTTPS协议分析工具&#xff0c;不仅能够抓取PC上的流量&#xff0c;还能作为代理&#xff0c;抓取手机流量&#xff0c;在之前的文章《使用Fiddler进行HTTP流量分析》中介绍了Fiddler的基本用法&#xff0c;本文介绍如…

Spark Steaming 点滴

Spark Streaming 模块是对于 Spark Core 的一个扩展&#xff0c;目的是为了以高吞吐量&#xff0c;并且容错的方式处理持续性的数据流。目前 Spark Streaming 支持的外部数据源有 Flume、 Kafka、Twitter、ZeroMQ、TCP Socket 等。Discretized Stream 也叫 DStream) 是 Spark S…

CocoaPods远程私有库

上一篇&#xff08;让自己的开源项目支持CocoaPods集成&#xff09;介绍了将自己开发的框架代码发布到Cocoapods&#xff0c;全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改&#x…

大数据平台的秘密

大数据&#xff0c;这个词越来越热&#xff0c;很多人都在谈大数据&#xff0c;其实很多张口闭口大数据的人&#xff0c;或许都不知道数据是如何产生、传递、存储、运算到应用。有段时间&#xff0c;看到一些大数据文章&#xff0c;就感觉纯属凑热闹&#xff0c;小数据都没搞明…

Fiddler使用技巧:强大的数据文本编解码功能

“ 郑重推荐Fiddler工具自带的TextWizard功能。”Fiddler作为一个HTTP类协议的抓包分析工具&#xff0c;之前已介绍过抓包分析功能&#xff0c;可参考文章&#xff1a;《使用Fiddler进行HTTP流量分析》《使用Fiddler抓取手机HTTP流量》在抓包分析功能之外&#xff0c;我们一定不…

jquery validate 详解一

jQuery校验 官网地址&#xff1a;http://bassistance.de/jquery-plugins/jquery-plugin-validation 一导入js库 <script src"../js/jquery.js" type"text/javascript"></script><script src"../js/jquery.validate.js" type"…

安装VMWare tools,以及解决安装后/mnt中有hgfs但没共享文件的方法

一、首先是安装VMWare tools安装过程可参考&#xff1a;http://www.cnblogs.com/jiu0821/p/7559949.html二、解决安装VMWare tools后/mnt中有hgfs但没共享文件 前提&#xff1a;在虚拟机软件中设置了共享目录 此时在linux中进入 /mnt/hgfs 文件夹&#xff0c;但发现共享的文件没…

音乐(文件)断点下载

这篇文章介绍音乐等文件的下载&#xff0c;支持断点续传。 我们需要创建两个类 HYDownLoader&#xff1a;音乐下载的主类&#xff0c;可以进行新建下载、暂停下载、取消下载等。 HYFileTool&#xff1a;文件管理类&#xff0c;主要为HYDownLoader服务&#xff0c;可以判断文件…

php设计模式

原型模式&#xff08;prototype&#xff09; PHP设计模式之&#xff1a;原型模式 刚刚了解了原型模式&#xff0c;通过资料以及自身了解整合以下资料&#xff1a; 原型模式通过复制已经存在的实例来返回新的实例&#xff0c;而不是新建实例&#xff0c;并且原型&#xff08;被复…

TextKit及应用

在iOS开发中我们常常使用UIKit的UITextView、UITextField、UILabel来显示文字。它们底层都是基于一个叫做TextKit的强大引擎。通过TextKit&#xff0c;我们可以方便地修改文字的样式和排版&#xff0c;而不需要直接操作复杂的Core Text。 1.什么是TextKit 在iOS7中&#xff0c…

判断类之间的父子关系

如何判断两个类之间的父子关系&#xff1f; java为我们提供了instanceof运算符&#xff0c;可以用来判断一个对象是否是否个类的实例&#xff0c;所以很容易的想到子类的对象肯定是父类的实例。但是如何所涉及到的类是不可实例化的该怎么办呢&#xff1f;好在java的Class为我们…

顺F速运,你被爱加M坑了

“ 顺F速运APP安全性分析。”之前的文章《Wireshark分析实战&#xff1a;某达速递登录帐号密码提取》对某达速递的APP进行了分析&#xff0c;该APP将数据完全暴露于网络流量中。于是对快递行业老大顺F速运的APP进行了分析&#xff0c;发现该APP质量还算上乘&#xff0c;但是&am…

[大数据之Spark]——Actions算子操作入门实例

Actions reduce(func) Aggregate the elements of the dataset using a function func (which takes two arguments and returns one). The function should be commutative and associative so that it can be computed correctly in parallel. 这个方法会传入两个参数&#x…

Runloop总结

1.什么是Runloop Runloop字面上翻译就是运行循环&#xff0c;也就是一直在转圈圈运行着&#xff0c;类似于do…while()。我们思考一个问题&#xff1a; 一个线程执行完成后就会退出&#xff0c;当我们启动一个iOS APP时&#xff0c;系统会调用main.m文件的main()函数: int m…

Android拷贝工程不覆盖原工程的配置方法

http://www.2cto.com/kf/201203/125131.html 在Eclipse中改包名的时候选择refactor-->rename,勾选Rename subpackages,这样就不需要一个个修改每个类中导入的包名了转载于:https://www.cnblogs.com/leihupqrst/p/3670224.html

顺F速运国际版,你的密码漏点了

“ 对顺F旗下各APP顺藤摸瓜分析——顺F速运国际版。”前文《顺F速运&#xff0c;你被爱加M坑了》提到&#xff0c;顺F速运APP使用爱加密加壳&#xff0c;流量中传输内容被加密并BASE64编码了&#xff0c;只是安全性不够&#xff0c;壳没有将顺丰的加密算法及密钥保护好。秉承避…

利用Injection插件加快Xcode编译速度

我们在调试iOS原生代码时&#xff0c;每次修改都需要CommandR来重新编译运行。当项目代码量很大&#xff0c;编译时间就会很漫长。因此对于开发中来说&#xff0c;如果能加快编译速度&#xff0c;能大大提高生产效率。如果我们能像Swift Playground、小程序或网页那样修改代码后…

存储过程的优缺点 (转载)

为什么要用存储过程 几个去 IBM 面试的兄弟回来抱怨&#xff1a;去了好几个不同的 IBM 项目组&#xff0c;几乎每个面试官问到数据库的时候都要问用没用过存储过程&#xff0c;烦人不&#xff1f;大家去面的程序员&#xff0c;又不是 DBA&#xff0c;以前的项目都没有用到存储…

计算机知识的学习

我不是计算机科班出生&#xff01; 大学里喜欢跟医电系的人混在一起&#xff0c;受到他们影响较多&#xff0c;开始喜欢上计算机&#xff01;win 98 Office 97 他们有的擅长C、有的擅长Flash、还有哥们喜欢硬件&#xff01; 西安的东六路是图书批发市场&#xff0c;我几乎每周…

Wireshark小技巧:将IP显示为域名

“ 本文介绍如何使Wireshark报文窗口的Source栏及Destination内的IP直接显示为域名&#xff0c;提升报文分析效率。” 一个典型的Wireshark界面如下&#xff1a; 从这个图里&#xff0c;能看到源IP及目的IP&#xff0c;在流量不大&#xff0c;数据不多的情况下&#xff0c;我…

个人学习某个系统或平台的3问式的整理和细化指引

i:三问&#xff1a;是什么&#xff1f;为什么&#xff1f;怎么样&#xff1f; ii:详细化问题指引&#xff1a;是什么的目的在于确定系统的大致范围&#xff0c;明确目标&#xff1a;->平台的主要功能是什么&#xff1f;业务流程是怎样的&#xff1f;业务范围有多大&#xff…

给iOS开发者的React Native入门使用教程

目录一. 原生iOS项目集成React Native二. 原生跳转RN页面三. 显示豆瓣热门电影列表四. 改为导航五.完整源代码一. 原生iOS项目集成React Native 创建一个新的文件夹&#xff0c;如RNProject&#xff0c;然后新建一个/ios的子文件夹&#xff0c;将已有的iOS项目全部文件复制进去…

PHP Memcached应用实现代码

肖理达 (KrazyNio AT hotmail.com), 2006.04. 06, 转载请注明出处 一、memcached 简介 在很多场合&#xff0c;我们都会听到 memcached 这个名字&#xff0c;但很多同学只是听过&#xff0c;并没有用过或实际了解过&#xff0c;只知道它是一个很不错的东东。这里简单介绍一下&a…

顺F分享,你是在裸奔吗?

“ 对顺F旗下各APP顺藤摸瓜分析——顺F分享。”前文对顺F速运和顺F速运国际版进行了分析&#xff0c;二者使用同一套接口&#xff0c;虽然保护强度不高&#xff0c;但对代码和数据的保护却区别对待&#xff0c;实在让人诧异。秉承避免浪费的原则&#xff0c;我们将持续对顺F旗下…

静态链接库与动态链接库 (二)动态链接库的编译与使用

上一篇文章里大概描述linux下静态链接库的编译与使用&#xff0c;下面讲动态链接库的编译与使用方法。 1. 什么是动态链接库 所谓动态链接库&#xff0c;是指编译的时候不会把程序引用到的库插入到执行程序里&#xff0c;而是在执行时候才会去加载相关的库&#xff0c;所有用到…

【React Native】react-navigation导航使用方法

目录集成react-navigation使用react-navigation上一篇介绍了如何在已有iOS项目中集成React Native。这一篇我们把上一篇的demo做下拓展&#xff0c;添加点击电影跳转到详情页。页面跳转使用React Native推荐的第三方导航控件&#xff1a;react-navigation 集成react-navigatio…

请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

QueryString 传递一个或多个安全性要求不高或是结构简单的数值。但是对于传递数组或对象的话&#xff0c;就不能用这个方法了 session(viewstate) 简单&#xff0c;但易丢失 作用于用户个人,过量的存储会导致服务器内存资源的耗尽。 application 对象的作用范围是整个全局&am…

邮Z速递物流,让用户密码在网络中遨游

“ 最近分析快递行业的APP上瘾了&#xff0c;求解救。”邮政作为快递行业一个傻大黑的存在&#xff0c;一直很奇怪&#xff0c;我一直在纳闷&#xff0c;邮政和EMS到底是不是一家&#xff0c;在很多网点&#xff0c;它们是一体的存在&#xff0c;但很多东西&#xff0c;又是各自…

servlet response 中文乱码

先&#xff0c;response返回有两种&#xff0c;一种是字节流outputstream&#xff0c;一种是字符流printwrite。 申明&#xff1a;这里为了方便起见&#xff0c;所有输出都统一用UTF-8编码。 先说字节流&#xff0c;要输出“中国"&#xff0c;给输出流的必须是转换为utf-8…