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

CocoaPods远程私有库

上一篇(让自己的开源项目支持CocoaPods集成)介绍了将自己开发的框架代码发布到Cocoapods,全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改,此时就可以创建远程的私有库。

通过pod search命令,Cocoapods会在官方索引库中进行搜索,通过pod repo可以查看本机添加了的索引库,其中的master( https://github.com/CocoaPods/Specs.git ) 就是官方的索引库。如果要创建私有库,我们可以添加一个不对外公开的索引库,使得pod search时,直接通过我们的索引库找到我们的代码。

主要步骤为

  1. 创建自己的远程私有索引库,即在远程git仓库创建一个包含.podspec索引文件的git仓库,并设置为私有(github需要收费,可以选择免费的码云gitee.com)
  2. 配置公私钥后,通过pod repo add ’远程私有索引库名称‘ ’远程私有索引库地址‘ ,添加为新的索引库。此时我们通过pod search '项目名称’时,就会同时在官方索引库和我们新添加的索引库中搜索。
  3. 通过pod lib create ‘远程私有框架库名称’,在本地创建模板库,放入我们的框架代码。
  4. 修改模板库里.podspec文件里的配置信息
  5. 在远程git仓库创建包含我们代码的git仓库,提交模板库到第3步中创建的远程git仓库
  6. 将框架.podspec文件提交到私有索引库

下面以实际例子创建HYSpecs远程私有索引库和远程框架HYBase
在这里插入图片描述

一、创建自己的远程私有索引库

  1. 码云创建名称为HYSpecs的git仓库,注意要选择私有
    在这里插入图片描述

二、添加私有索引库

为了访问上一步创建的索引库,我们先配置公钥和私钥

  1. 创建公钥和私钥
    在终端输入
ssh-keygen

显示Enter passphrase (empty for no passphrase): 时直接回车,此时成功在本地生成私钥和公钥。

  1. 将公钥配置到码云
    在码云上点击设置-ssh公钥,然后用Xcode或Sublime打开用户名/.ssh/id_rsa.pub文件,将内容拷贝到码云上。

  2. 通过以下命令添加私有索引库

pod repo add  HYSpecs git@gitee.com:xwjadmin/HYSpecs.git

此时用以下命令查看所有的索引库,可以看到已经成功添加HYSpecs

pod repo

在这里插入图片描述

三、创建本地框架模板

  1. cd到放项目的目录后,通过以下命令创建框架模板
pod lib create HYBase

此时会询问我们框架项目的一些基本信息,根据实际填写即可
在这里插入图片描述

  1. 模板创建成功后,把我们的框架代码(此示例为HYBaseViewController)放入Classes文件夹
    在这里插入图片描述

  2. cd到Example文件夹,执行安装命令

pod install

此时已经将Classes中的代码集成到Example的HYBase项目中,运行一下看是否能编译成功。

四、 配置HYBase.podspec

用Xcode或Sumlime打开HYBase.podspec文件,进行基本配置:


Pod::Spec.new do |s|s.name             = 'HYBase's.version          = '1.0.0's.summary          = 'HYBase.'s.description      = <<-DESC
HYBase.DESCs.homepage         = 'https://gitee.com/xwjadmin/HYBase's.license          = { :type => 'MIT', :file => 'LICENSE' }s.author           = { '151611438@qq.com' => '151611438@qq.com' }s.source           = { :git => 'https://gitee.com/xwjadmin/HYBase.git', :tag => s.version.to_s }s.ios.deployment_target = '8.0's.source_files = 'HYBase/Classes/**/*'end

详细参数请参照上一篇(https://blog.csdn.net/dolacmeng/article/details/88416019)

五、创建并提交到远程仓库

在码云创建名为HYBase的远程仓库
在这里插入图片描述
将第三步创建的模板提交的远程HYBase仓库:

git remote add origin https://gitee.com/xwjadmin/HYBase.git
git add .
git commit --m 'init'
push -u origin master -f
git tag '1.0.0'
git push --tags

具体步骤解释参照上一篇https://blog.csdn.net/dolacmeng/article/details/88416019

六、将框架的.podspec文件提交到私有索引库

pod repo push HYSpecs HYBase.podspec

此时我们的描述文件已经被提交到本地的私有索引库中,然后本地私有索引库会自动将描述文件同步到我们的远程私有索引库当中。
此时通过pod search命令就可以搜索到我们的框架了

pod search HYBase

在这里插入图片描述

注意在Podfile文件中,我们需要先声明使用的索引库

source 'git@gitee.com:xwjadmin/HYSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'

在这里插入图片描述

此时再执行pod install
在这里插入图片描述


七、子库

搜索AFNetworking,可以看见有多个子库

pod search AFNetworking

在这里插入图片描述

如检查网络状态的Reachability,可以只集成AFNetworking/Reachability这一子库,只需在Podfile文件添加:

pod "AFNetworking/Reachability"

例如框HYBase框架中需要集成Base、Category、Network等多个子库,在HYBase.podspec文件中添加如下:

s.subspec 'Base' do |b| b.source_files = ''
ends.subspec 'Category' do |c| b.source_files = ''
ends.subspec 'Network' do |n| n.source_files = ''n.dependency = 'AFNetworking'
end

其中source_files路径为对应代码的本地路径。

相关文章:

大数据平台的秘密

大数据&#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…

【React Native】iOS原生导航跳转RN页面

上一篇介绍了React Native使用react-navigation进行导航跳转页面&#xff0c;现在我们介绍下原生iOS中怎么导航进一个新的React Native页面。 一、原生跳转React Native 创建HYReactNativeManager管理类. 在HYReactNativeManager.h中声明实现声明RCTBridgeDelegate协议&…

mac 常用指令

苹果公司生产的Mac搭载OS x 系统&#xff0c;OS x基于Unix&#xff0c;所以很多指令都和linux大同小异。 以下是一些常用指令&#xff0c;一点点自己记录下&#xff0c;方便自己和他人。这篇文应该是长期更新的。 1.ls [选项] [目录名] 第一个当然是list 指令 列出目录的文件列…

如何高效地爬取链家的房源信息(一)

“Python实现的链家网站的爬虫第一部分。”在之前的文章&#xff0c;以链家成都站为例&#xff0c;分析过链家网站数据的爬取&#xff0c;文章如下&#xff1a;干货&#xff01;链家二手房数据抓取及内容解析要点但是&#xff0c;当时没有根据分析&#xff0c;将爬取实现。本系…

HDU5886 Tower Defence 【两遍树形dp】【最长链预处理】

题意&#xff1a;N个点的一棵带权树。切掉某条边的价值为切后两树直径中的最大值。求各个边切掉后的价值和&#xff08;共N-1项&#xff09;。 解法一&#xff1a; 强行两遍dp&#xff0c;思路繁琐&#xff0c;维护东西较多&#xff1a; dis表示以i为根的子树的直径&#xff0c…