经过长时间的开发,学习和沉淀,都会有一些自己好用的封装的库,但是每次都导入代码过于麻烦,所以我们可以创建我们自己的 pod
库,再用起来就会方便很多。下面就是小白创建和上传的步骤和上传中可能出现的问题解决方法。
首先创建自己的 trunk 账号
pod trunk me
查看是否有 trunk
账号,如图1,说明有账号
如果查不到信息,说明没有账号,需要注册账号
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
为例
打开 GitHub ,并登录账号。
创建项目
3.准备上传项目,首先在本地创建一个文件夹,用来和 github
关联,文件夹随意命名。
4.打开终端,切入路径到刚刚创建的文件夹中
5.开始使用
Git
命令,首先初始化Git
环境
git init
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
版权文件
点击 Review and submit 按钮提交,然后 commit
, push
到项目中。
提交tag
版本
- 需要注意的是
tag
版本要和podspec
文件版本保持一致spec.version = "0.0.1" // 库版本
git tag 0.0.1
git push origin 0.0.1
Releases tag
版本
校验podspec
文件
以上都准备好之后,可以开始校验podspec
文件并发布pod
库了。在终端 cd 到本地关联项目路径中
pod lib lint --allow-warnings
这一步可能会有一些问题,但是当时忘记记录了,大多数按照错误提示都比较好改,下面有些常见的错误:
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 update
或pod 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 邮箱进行验证(会有验证邮件)
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: 祝大家开心快乐每一天。