创建自己的 pod 库 并上传

经过长时间的开发,学习和沉淀,都会有一些自己好用的封装的库,但是每次都导入代码过于麻烦,所以我们可以创建我们自己的 pod 库,再用起来就会方便很多。下面就是小白创建和上传的步骤和上传中可能出现的问题解决方法。

首先创建自己的 trunk 账号

pod trunk me

查看是否有 trunk 账号,如图1,说明有账号

查看trunk账号信息

如果查不到信息,说明没有账号,需要注册账号

pod trunk register 203***82@qq.com 'HJ'
[!] Please verify the session by clicking the link in the verification email that has been sent to 203***82@qq.com
登录邮箱去验证

203***82@qq 邮箱是 GitHub 账号 或者 码云 账号 'HJ' 是作者名称,当你上传成功 pod 库时显示的名称

创建项目上传到 GitHub码云

项目的创建就不在这里描述了,上传项目以上传GitHub为例

  1. 打开 GitHub ,并登录账号。

  2. 创建项目

创建项目1
创建项目2
创建项目3

3.准备上传项目,首先在本地创建一个文件夹,用来和 github 关联,文件夹随意命名。

准备文件夹

4.打开终端,切入路径到刚刚创建的文件夹中
切入路径

5.开始使用Git命令,首先初始化Git环境

git init
初始化Git环境

6.关联Git 库,使用刚刚创建的Git项目地址

git clone https://github.com/***/HJBaseTableView.git

然后就拉取到了项目的空文件夹,切换到空文件夹,然后把创建的项目内容拉进来

项目内容拉进来
项目文件描述

7.上传代码文件

git add . // 添加所有改动文件
git commit -m '提交操作的描述' // 添加改动描述
git push // 推送到GitHub

创建 podspec 文件

常用的语句

Pod::Spec.new do |spec|
  spec.name         = "HJBaseTableView"  // 库名称
  spec.version      = "0.0.1" // 库版本
  spec.summary      = "Modules and components framework for iOS."  // 库描述
  spec.authors      = { 'HJ' => '203***82@qq.com' }   // trunk 账号 邮箱 (作者 : 邮箱)
  spec.description  = <<-DESC
    一个简单的TableView 内部采用了 FDTemplateLayoutCell 计算和缓存高度,方便创建和使用。
                   DESC  // 库的详细描述
  spec.homepage     = "https://github.com/***/HJBaseTableView" // 库的Git地址主页
  spec.license      = { :type => "MIT", :file => "LICENSE" }  // 固定的 版权校验
  spec.platform     = :ios, "9.0"   // 支持的最低版本 iOS
  spec.source       = { :git => "https://github.com/whhaijun/HJBaseTableView.git", :tag => spec.version }  //  库的Git 下载地址 和 版本号
  spec.source_files  = "HJBaseTableView/HJBaseTableView/**/*"   //  库的Git 资源文件(需要暴露的文件路径,以 podspec 同级别为开始  如 podspec文件 和第一个 HJBaseTableView文件夹 同级别)
  spec.swift_version = '4.0'  //  可选 ,支持的swift 最低版本
  spec.static_framework  =  true // 是否是静态库
  spec.requires_arc = true  // 是否是 arc 环境
  spec.dependency 'UITableView+FDTemplateLayoutCell', '1.6'  // 可选 ,依赖的第三方库  UITableView+FDTemplateLayoutCell 和版本号,版本号可选
end

需要注意的点:

  • 首先创建的 pod 库,最好自己验证一下,是否正确有误,
  • 支持的最低 iOS 版本
  • 支持的 swift 最低版本
  • 是否有依赖的第三方库
    podspec 文件,有很多字段,可以查看其它的文章查阅

创建LICENSE版权文件

步骤1
i步骤2
步骤3

点击 Review and submit 按钮提交,然后 commit, push到项目中。

提交tag版本

  • 需要注意的是tag版本要和 podspec 文件版本保持一致 spec.version = "0.0.1" // 库版本
git tag  0.0.1
git push origin  0.0.1
提交tag版本成功
查看tag版本

Releases tag版本

Releases tag版本
Releases 成功

校验podspec文件

以上都准备好之后,可以开始校验podspec文件并发布pod库了。在终端 cd 到本地关联项目路径中

pod lib lint --allow-warnings
校验podspec文件

这一步可能会有一些问题,但是当时忘记记录了,大多数按照错误提示都比较好改,下面有些常见的错误:

  • spec.homepage 官网首页地址错误
  • spec.source 下载的Git地址不正确
  • 提示spec.source_files错误,需要注意的是 podspec文件和 source_files 文件是同级别开始的
  • 如果确认 spec.source_files 编写一定没有错误,那么有可能就是没有上传tag版本或Releases tag版本
  • 版权文件错误或没有找到


    错误版权文件

上传发布

再校验 podspec文件成功之后,基本就没有什么问题了,可以大多数可以一遍成功。

pod trunk push HJBaseTableView.podspec --use-libraries --allow-warnings
发布成功

如何有错误,和上一步一样,一样一样的解决,修改完错误,记得更新 tag Edit Release。

没有问题之后就可以验证是否成功了,可以用 pod search HJBaseTableView 来查看

表示上传成功

如果没有找到,那就更新一下本地 pod

pod  repo   update
pod install --repo-update

pod repo updatepod install --repo-update,在项目中这两个些时候可以等同。如果没有在项目中,就是用pod repo update更新,更新可能会有点慢。

当有新的版本上传时,本地的项目中想要更换 ,也需要先更新本地pod库,然后再更新项目 。可以使用 pod repo update + pod install 或 直接 pod install --repo-update

pod  repo   update
pod install --repo-update
pod update HJBaseTableView --verbose --no-repo-update

pod update HJBaseTableView --verbose --no-repo-update 只更新项目中的HJBaseTableView第三方库,其他的不更新,这样就不用更新所有版本了。

删除上传的Pod库,或者弃用pod库

如果我们想删除一个已有的库,可以使用下面的指令:

pod trunk delete NAME 0.0.1 删除某个版本
pod repo remove NAME 删除某个版本
pod trunk deprecate NAME 弃用某个仓库,不会删除,但是是下载时会有提示已弃用

/// 删除,后面需要跟上版本号
pod trunk delete LZScaner 0.0.1
/// 删除某个库
pod repo remove NAME
/// 弃用某个库
pod trunk deprecate LZScaner

如果使用 delete 指令会有下面的提醒:

WARNING: It is generally considered bad behavior to remove versions of a Pod that others are depending on!
Please consider using the `deprecate` command instead.

Are you sure you want to delete this Pod version?
> 

这时,输入y,回车即可!

发布pod库中遇到的问题

1、运行pod lib lint --allow-warnings校验 podspec文件时报错

xcodebuild: Returned an unsuccessful exit code. You can use '--verbose' for more information.

尝试解决:pod spec lint ****.podspec --verbose

2、运行pod lib lint --allow-warnings校验 podspec文件时报错

* ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.

尝试解决:在验证后面加上 --skip-import-validation
pod lib lint --allow-warnings --skip-import-validation

3、发布时,运行pod trunk push HJBaseTableView.podspec --use-libraries --allow-warnings时报错

Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.

尝试解决:第一步 查看 pod trunk me 是否可以查看到信息。
如果 pod trunk me 报错, 需要到 注册的 trunk 邮箱进行验证(会有验证邮件)

trunk邮箱验证.png

4、发布时 pod 成功之后,pod search CMSPaaS 报错时

Unable to find a pod with name, author, summary, or description matching ‘CMSPaaS’CocoaPods was not able to update the 'cocoapods' repo. If this is an unexpected issue and persists you can inspect it running 'pod repo update --verbose'

尝试解决:删除原来的查询json文件

rm ~/Library/Caches/CocoaPods/search_index.json

再次pod search CMSPaaS

^ 0_0 ^ -- Bright: 祝大家开心快乐每一天。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容