CocoaPods之----制作篇

MySQL安装最后启动报错--Job for mysqld.service failed because the control process exited with error code. See MySQL安装最后启动报错: [root@localhost mysql]# systemctl start mysqld Warning: mysqld.service changed on disk. Run 'systemctl daemon-reload' to reload units. Job for mysqld.service failed because the control process exited with error code. See "systemctl status m 阅读详情

如果我们已经做好了一个不错的库,并上传到github,这时,你会想让这个库支持pod使用,下面就来介绍如何制作自己的pod。

1.cd进入本地某个目录,从github上clone下项目,已经有项目的忽略这一步。
2.cd进入项目目录,这里我用我的开源项目为Test来说,进去后输入

git tag 'v1.0.0'

git push --tags

git push origin master

给项目加入一个tag。以便pod能自动识别,注意这里版本号加“v”,不然后面会有坑。

3.生成.podspec文件,这个是pod的描述文件,很重要

pod spec create https://github.com/lupeihong/Test

执行后会看到当前目录下会出现一个Test.podspec文件,用编辑器打开,会有很多注释,根据自己的项目修改,得到类似下面的内容:

Pod::Spec.new do |s|
  s.name         = "Test"
  s.version      = "1.0.0"
  s.summary      = "空视图处理"
  s.description  = "A UIView category for showing empty datasets whenever the view has no content to display."
  s.homepage     = "https://github.com/lupeihong/Test"
  s.license      = { :type => "MIT", :file => "LICENSE" }
  s.author       = { "lupeihong" => "123456@qq.com" }
  s.platform     = :ios, "6.0"

  #  When using multiple platforms
  # s.ios.deployment_target = "5.0"
  # s.osx.deployment_target = "10.7"


  s.source       = { :git => "https://github.com/lupeihong/Test.git", :tag => "v#{s.version}" }

  s.source_files  = "Classes", "Test/UIView+Test.{h,m}"

  s.framework  = "UIKit"
  # s.frameworks = "SomeFramework", "AnotherFramework"

  # s.library   = "iconv"
  # s.libraries = "iconv", "xml2"


  s.requires_arc = true

  # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
  # s.dependency "JSONKit", "~> 1.4"

end

最重要的是s.source_files这个。你要把你要包含的文件路径找对了。 然后用通配符匹配好了。当然其他项,你看看注释啥的 选择性的填一些。
建议直接拿一些成熟的开源库的podspec改就行,生成的模板里有很多冗余的属性。

4.接着 把修改好的文件push到github上去

git add Test.podspec

git commit -am "add Test.podspec file”

git push -u origin master

最后,在你项目的Podfile里面加入这个第三方库的地址。

pod 'Test', :git => 'https://github.com/lupeihong/Test.git'

然后pod update,就能通过pod来使用你自己库。


5.发现没有,以上的方法,使用pod search 是搜不到你的库的,因为这只是你私有的库而已。在你本地,前往~/.cocoapods/repos/master/Specs,你会看到cocoapod所有公有的开源库配置,这个通过cocoapod官方在github的specs来管理,地址为https://github.com/CocoaPods/Specs 。说到这里,你会想把这个库fork分支下来,clone到你本地,把自己的Test.podspec加入,然后add、commit、 push,最后在github上pull request来和官方的主分支合并,可是你会发现请求马上被自动关闭。WHY!!!!!!
虽然一开始使用GitHub Pull Requests来整理所有公共pods效果很好。但是,随着Pod数量的增加,这个工作对于spec维护人员Keith Smiley来说变得十分繁杂。甚至一些没有通过$ pod lint的spec也被提交上来,造成repo无法build。
CocoaPods 0.33中加入了Trunk服务。CocoaPods Trunk服务的引入,解决了很多类似的问题。CocoaPods作为一个集中式的服务,使得分析和统计平台数据变得十分方便。下面来说说怎么分布CocoaPod。

6.要想使用Trunk服务,首先你需要注册自己的电脑。这很简单,只要你指明你的邮箱地址(spec文件中的)和名称即可。

pod trunk register 123456@qq.com 'lupeihong' --description='macbook air'

后面可以加上 –verbose可选参数,为了便于输出注册过程中的调试信息
然后顺利的话你会收到一份邮件,需要点击验证。

可以使用

pod trunk me

查看自己的注册信息

ps:当然,如果你的pod是由多人维护的,你也可以添加其他维护者

pod trunk add-owner ARAnalytics kyle@cocoapods.org

6.上面的工作完成之后,我们就可以开始 trunk push 了提交我们的podspec文件。
pod trunk push 命令会首先验证你本地的podspec文件(是否有错误),之后会上传spec文件到trunk,最后会将你上传的podspec文件转换为需要的json文件
第一步验证podspec文件也可以自己去做

pod spec lint Test.podspec

如果验证成功的话会显示

Test.podspec passed validation.

但你收到类似消息,如:

[!] /usr/bin/git clone https://github.com/lupeihong/Test.git /var/folders/z2/h6c1f1hj72b6p5y3dhgjd27c0000gn/T/d20150827-4039-1ujw0u9 --single-branch --depth 1 --branch v1.0.0

Cloning into '/var/folders/z2/h6c1f1hj72b6p5y3dhgjd27c0000gn/T/d20150827-4039-1ujw0u9'...

warning: Could not find remote branch v1.0.0 to clone.

fatal: Remote branch v1.0.0 not found in upstream origin

Unexpected end of command stream

why!!!再次崩溃。。cao

还记得你之前 add tag的时候吗,如果你写的是git tag '1.0.0' 这里就会报错,无语,一定记得要加“v”啊!

最后,输入

pod trunk push Test.podspec

等待部署成功。

上面的代码做了三件事:
*验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod spec lint”命令进行验证。
*上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁琐操作)
*将你上传的podspec文件转成json格式文件

执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,一般需要一到两个工作日可以审核结束。这种心情有点像提交App给Apple审核,哈哈。

7.查看我们自己创建的pods依赖库
如果收到了cocoapods官方发过来的审核通过邮件后,你很急着用pod search命名肯定会失望,没收到,还记得我们本地的~/.cocoapods/repos/master/Specs吗,还没跟官方的github上的Specs同步,
执行一次

pod setup

或者

pod update

来更新本地缓存的Spec库,再去search就能看到了

就能够用

pod 'Test', '~> 1.0.0' 

这样去安装自己pod依赖库了
而.podspec文件也可以作为管理内部代码的利器

pod 'Z', :path => 'path/to/directory/with/podspec'

参考资料://
http://www.360doc.com/content/14/0309/10/11029609_358969425.shtml
http://www.cocoachina.com/industry/20140623/8917.html
http://www.tuicool.com/articles/6FF7fi

100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状、堆积、横向、百分比、3D柱状图) 0. 专栏导读 1. 普通柱状图 2. 簇状柱形图 3. 堆积柱形图 4. 横向柱状图 5. 横向双向柱状图 6. 百分比堆积柱形图 7. 3D柱形图 8. 3D堆积柱形图 9. 3D百分比堆积柱形图 阅读详情

相关推荐

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere

银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。

jiaworld的博客 730

iOS中SDK开发 -- cocoapods库创建

在iOS项目中,经常使用`cocoadpods`来进行依赖管理以及三方库引入等。引入的三方库一般会有几种形式:一、在`Pods`目录下可以直接看到源代码的开源库,如`AFNetworking`,`Masonry`等常见开源库。二、在`Pods`目录下拉取的项目文件只能看到对应的`头文件`和`资源文件`的闭源库,如`AlipaySDK`和`WechatOpenSDK`等,这种三方库一般涉及到商业逻辑和安全性方面的考量,不能开源。

许江涛的博客 1683

别再被坑了!手把手教你从官网下载免费正版Notepad++(附最新网盘链接)

本文详细指导如何从Notepad++官网安全下载正版软件,避免山寨版本带来的安全风险。通过识别官网特征、推荐官方下载渠道、揭露山寨网站骗局及验证正版功能,帮助用户高效获取纯净的Notepad++代码编辑器,并分享实用插件和配置优化技巧。

weixin_42527654的博客 562

CocoaPods详解之----制作篇

CocoaPods详解之----制作篇 作者:wangzz 原文地址:http://blog.youkuaiyun.com/wzzvictory/article/details/19178709 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 学会使用别人的Pods依赖库以后,你一定对创建自己的依赖库跃跃欲试,今天就来揭开Pods依赖库创建过程的神秘面纱。整个创建过程都以我实现的一个名称为WZMarqueeView跑马灯效果的view为例,步骤

王中周的个人博客 3万+

FPGA新手必看:Create HDL Wrapper和Generating Output Products到底该先用哪个?

本文深入解析了FPGA设计中Create HDL Wrapper与Generating Output Products的正确使用顺序,帮助新手避免常见错误。详细介绍了两者的功能差异、执行顺序的底层逻辑以及工程管理的最佳实践,特别适合使用Vivado进行FPGA开发的初学者。

xk7n92h3p5m的博客 1065

【实战学习(五)】开源项目学习之uWSGI的部署以及配合nginx

文章目录1)uWSGI是什么?1.1 WSGI1.1.1 Application端1.1.2 Server端1.1.3 WSGI中间件1.2 uwgi1.3 uWSGI、WSGI、uwsgi之间的关系*为什么有了uWSGI为什么还需要nginx?2)连接uwsgi和Django*避坑之Windows10安装uWSGI非常极其艰难,最好勿浪费时间,直接转战Linux吧:2.1 uWGI部署2.1.1 在虚拟环境下安装uwsgi:2.1.2 测试uWSGI的运行2.1.3 使用uWSGI运行Django项目2.

黑黑白白君的博客 1507

CocoaPods制作篇(1)

一、创建自己的github仓库 CocoaPods都托管在github上(官方链接为: https://github.com/CocoaPods ),所有的Pods依赖库也都依赖github,因此第一步我们需要创建一个属于自己的github仓库。仓库创建界面如下图: Paste_Image.png 上图中标了序号的共6处,对应的说明如下: 1、Repository

jesse881025的专栏 1498

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

Xcode 执行 pod lib lint 报错:building for iOS Simulator, not found for architecture arm64

之前打包机升级 Xcode12 之后发现私有库发版时执行命令报错,一开始看报错信息提示以为是 Xcode12 或者 CocoaPods 的锅,想着蹲个新版本出来也许就好了,就暂时没管,打包机仍旧使用 Xcode11 发版。后来因为另外的需求需要我们升级 Xcode12,要优先解决组件发版报错问题,所以就仔细排查了下这个问题。

gcs的博客 3356

超详细neo4j安装教程

一、neo4j简介 最近开始学习知识图谱,所以首先想先学习一下neo4j的使用。 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。由于知识图谱中存在大量的关系型信息(实体—关系—实体), 使用结构化数据库进行存储将产生大量的冗余存储信息, 因此将图数据库作为知识图谱的存储容器成为流行的选择。当前较为常用的图数据库主要有 Neo4j 等。 二、neo4j的安装 功能快捷键 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Co

qq_38335648的博客 9万+

IC芯片验证 - 手把手教你搭建UVM验证环境

这是一个UVM的demo项目

howard789的博客 3万+

iOS 解决pod lib lint/repo push不支持模拟器的情况

1 可以配置从而跳过pod的验证 pod lint 中后缀--skip-import-validation pod repo push 中后缀--skip-import-validation 2 直接注释pod的验证代码 获取pod的路径 gem which cocoapods /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.8.4/lib/coc...

rpf的博客 1043

GEE:大面积研究区域数据分块导出,以解决内存限制和导出失败的问题

本文介绍了在Google Earth Engine (GEE)平台分块导出大面积研究区域数据的方法。针对直接导出大区域影像易失败的问题,作者提出通过网格分块技术进行处理。文章展示了完整的JavaScript代码示例,包含定义研究区域、加载ESA WorldCover数据集、设置分块参数(包括像素大小、分块尺寸)、创建网格系统、处理坐标转换等关键步骤。代码中还提供了错误处理和导出按钮功能,确保数据能可靠地分块导出到Google Drive。该方法有效解决了大区域数据导出时的内存限制问题,适用于全球范围的研究。

养乐多的博客 1186

三、IOS CocoaPods详解之制作篇

学会使用别人的Pods依赖库以后,你一定对创建自己的依赖库跃跃欲试,今天就来揭开Pods依赖库创建过程的神秘面纱 学会使用别人的pods依赖库以后,你一定对创建自己的依赖库跃跃欲试,今天就来揭开pods依赖库创建过程的神秘面纱。整个创建过程都以我实现的一个名称为wzmarqueeview跑马灯效果的view为例,步骤如下: 一、创建自己的github仓库 cocoapods都托管在github上(官方链接为:https://github.com/cocoapods),所有的pods依赖库也都依赖git

w08023176的博客 445

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CocoaPods实践之制作篇

总结CocoaPods制作步骤:CocoaPods制作要点:1、需要添加license类型,这里选择了MIT License。 2、.podspec文件内容参考Pod::Spec.new do |s| s.name = "SJDropDownView" s.version = "1.0.0" s.summary = "A dr

shawjan的专栏 782

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

iOS开发笔记——CocoaPods详解_制作篇

CocoaPods详解之----制作篇 作者:wangzz 原文地址:http://blog.youkuaiyun.com/wzzvictory/article/details/20067595 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 学会使用别人的Pods依赖库以后,你一定对创建自己的依赖库跃跃欲试,今天就来揭

a466468841的博客 475

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IOS-CocoaPods制作篇

作者:wangzz 原文地址:http://blog.youkuaiyun.com/wzzvictory/article/details/20067595 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!   学会使用别人的Pods依赖库以后,你一定对创建自己的依赖库跃跃欲试,今天就来揭开Pods依赖库创建过程的神秘面纱。整个创建过程都以...

weixin_34334744的博客 91

CocoaPods详解之—-制作篇

学会使用别人的Pods依赖库以后,你一定对创建自己的依赖库跃跃欲试,今天就来揭开Pods依赖库创建过程的神秘面纱。整个创建过程都以我实现的一个名称为WZMarqueeView跑马灯效果的view为例,步骤如下: 一、创建自己的github仓库 CocoaPods都托管在github上(官方链接为:https://github.com/CocoaPods),所有的Po

技术之窗 569

CocoaPods制作篇(2)

今天来讲一下cocoapods制作,网上教程很多,就不再讲理论,直接操作: 1、创建仓库: 2、将仓库克隆本地: 1 git clone https://github.com/2360219637/CZCTestCode.git  3、创建.podspes文件,此处命名为CZCTest

jesse881025的专栏 272
上一篇: git的使用(Mac环境下)
下一篇: 解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题
小路恢弘
博客等级 码龄17年 36粉丝 60原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值