上传个人第三方库到cocoapods

颈椎病专家
• 阅读 4462

上传个人库到cocoapods

1.1 在GitHub创建项目

  • 填写项目名
  • 填写项目描述
  • 设置库公开(Public)
  • 添加证书及README文件,证书也可以在项目创建完成后点击Create new file并输入LICENSE,点击右上角出现的Choose a license template选择需要的证书并添加进去

设置完成后直接克隆到本地,并将工程代码复制进该文件夹

1.2 创建podspec文件

1.2.1 通过终端进克隆到本地的文件夹
cd xxx
1.2.2 创建podspec文件
pod spec create xxx
  • xxx为自己创建的库的名字,如Alamofire
1.2.3 配置podspec文件
@version = "0.0.1"
Pod::Spec.new do |s|
s.name = "MCircleBoard"
s.version = @version
s.summary = "MCircleBoard"
s.description = "MCircleBoard is a dash board."
s.homepage = "https://github.com/MichaelLynx/MCircleBoard"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "xxx" => "xxxxxx@qq.com" }
s.platform = :ios
s.ios.deployment_target = "8.0"
s.source = { :git => "https://github.com/MichaelLynx/MCircleBoard.git", :tag => "v#{s.version}" }
s.source_files = "Code/*.swift"
s.resources = ["Code/*.xcassets"]
s.swift_version = "4.0"
s.requires_arc = true
s.framework = "UIKit"

end
  • 如果有依赖库则增加如:s.dependency "AFNetworking", '~> 3.0'
  • 比较重要的字段有:nameversionsummaryhomepagelicenseauthordeployment_targetsourcesource_filesrequires_arc
  • source_files:最好把要上传的文件放在专门的文件夹下
  • 往库里添加资源:添加bundle然后设置属性resource\`resources\\resource_bundles`

spec里添加资源:

spec.resource = 'Code/MCircleBoardIcon.bundle'
spec.resources = ['Images/*.png', 'Sounds/*']
spec.resource_bundles = {
    'YourBundleName' => ['MapView/Map/Resources/*.png'],
    'OtherResources' => ['MapView/Map/OtherResources/*.png']
  }

bundle内图片的调用方式:

var bundle = Bundle(for: theClass.self)
if let resoucePath = bundle.path(forResource: "bundleName", ofType: "bundle"), let resouceBundle = Bundle(path: resoucePath) {
    bundle = resouceBundle
}
let image = UIImage(named: imageName, in: bundle, compatibleWith: nil) ?? UIImage()
  • 要设置成为第三方库,获取图片只能通过该方式,而不能像主工程项目里的获取方式
  • theClass:工程项目名称;bundleName:对应的bundle的名字

podspec字段说明:

字段 作用
name 库的名称
version 版本号,该号一定要和GitHub上的对应,参见下面的步骤
summary 该库的一个简介
homepage 这个库的主页,对应Github上的地址
license 采用何种license,和创建GitHub时候选择的那个要对应
author 作者
deployment_target 可以使用该库的iOS的最低版本
source 数据源,对应的是你clone的时候使用的那个HTTPS的链接地址
source_files 哪些文件是要上传到pods的
requires_arc 是否在ARC环境下使用
dependency 该库还引用了哪些第三方库

1.3 GitHub上创建发布版本

  • podspec文件验证无误后需要先将项目更新到GitHub上
  • 更新完毕后再release创建新版本,Tag version以v开头,后接版本号,标题release title需要填写
  • 如果操作过程中有对代码进行了更改,则需要删除release,上传代码并重新创建该release

1.4 注册Trunk账号及上传项目

1.4.1 注册cocoapods账号
如果已经注册成功账号,则这步跳过

在终端输入指令:

pod trunk register 邮箱地址 '用户名' —description='描述信息'
或
pod trunk register 邮箱地址 '用户名'  --verbose
  • 用户名后面的信息可不写
  • 注册成功后会提示去邮箱验证信息
  • 注册的信息最好和GitHub保持一致,方便记忆
  • 这里注册的邮箱地址和用户名即podspec的author

验证成功后在终端输入以下命令确认是否注册成功

pod trunk me
  • 出现用户信息则注册成功
1.4.2 验证podspec文件
如果确认podspec文件没问题则可以不进行验证

如果配置得正确,则输入验证命令后会提示:passed validation.

podspec文件配置完成之后可以在终端输入指令进行验证

pod spec lint XXX.podspec
  • 如果验证的结果有error则必须按要求进行处理;如果有warning则可以选择处理也可以忽视
  • 后面的XXX.podspec可省略
  • pod lib lint只从本地验证你的pod能否通过验证;pod spec lint从本地和远程验证你的pod能否通过验证。pod lib lint可省略,直接用pod spec lint进行验证
1.4.3 上传cocoapods

输入以下指令将代码上传到cocoapods:

pod trunk push

如果之前验证的结果里有warning,则可以用--allow-warnings忽略警告:

pod trunk push --allow-warnings

完成后出现Tell your friends字样则证明上传完毕,可以通过pod search XXX指令来验证是否上传成功。

如果没搜索出来则可以通过pod repo update更新本地的pod库,然后再进行搜索。

如果事先已经下载了旧版的库,可以直接cd到该工程,并pod update 第三方库名,哪怕暂时无法搜索出来,pod update依然可以有效将其更新到最新版本。

以下是我自己创建的第三方库,欢迎点个Star,也欢迎相互交流。
MCircleBoard

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
4年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这