笔者之所以写这篇文章是因为自己记性不好,方便自己和像我一样的人查阅,顺便把自己项目里用到的东西分享给大家,忘记了再查阅一下。
1、注册CocoaPods账户信息(已注册过请略过)
创建一个开源pod库, 首先我们要注册CocoaPods账户, 使用trunk方式在终端执行:
pod trunk register '邮箱地址' '用户名' --description=‘描述内容’ --verbose
可以直接使用GitHub邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功, 成功之后可以终端执行:
pod trunk me
如果显示类似下面的信息,代表已经成功!
2、创建仓库并克隆
1. 首先创建一个你想上传的库的同名仓库
2. 克隆到本地
3. 创建.podspec文件并修改对应信息,将上传代码文件夹拖进去
pod spec create ZQNetworking.podspec
Pod::Spec.new do |spec|
spec.name = "ZQNetworking" # 项目名称
spec.version = "1.0.0" # 版本号 与 你仓库的 标签号 一致
spec.summary = "A set of useful Base Object for Foundation, UIKit and more.This is my personal packaged network request tool" # 项目简介
spec.homepage = "https://github.com/zziqiang/ZQNetworking" # 项目主页
spec.license = "MIT" # 开源证书
spec.author = { "zhengziqiang" => "a516969532@163.com" } # 作者信息
spec.social_media_url = "https://github.com/zziqiang" # 个人主页
spec.platform = :ios, "9.0" #平台及支持的最低版本
spec.source = { :git => "https://github.com/zziqiang/ZQNetworking.git", :tag => spec.version } #你的仓库地址,不能用SSH地址
spec.source_files = "ZQNetworking/**/*.{h,m}" # 代码的位置, ZQNetworking/*.{h,m} 表示 ZQNetworking 文件夹下所有的.h和.m文件
spec.requires_arc = true # 是否启用ARC
# spec.public_header_files = "Classes/**/*.h"
# spec.resources = "Resources/*.png"
spec.dependency "AFNetworking" ,"~> 3.2.1"
spec.frameworks = "UIKit" # 依赖库
end
4. 编写完成后需要验证.podspec文件的合法性
pod lib lint ZQNetworking.podspec
其他命令:
//本地验证
pod lib lint
//本地和远程验证
pod spec lint
// 显示详细的检测过程,出错时会显示详细的错误信息
pod lib lint --verbose
//允许警告,用来解决存在警告导致不能通过校验的
pod lib lint --allow-warnings
4.1 这里常见的错误
① ZQNetworking.podspec
中的路径、名称千万不能错了!
② dependency、source_files
这两个一定不能搞错了!
③ 这一点是最重要的!
如果创建的公有库依赖其三方库在验证过程中会报[-Werror,-Wnon-modular-include-in-framework-module]
,是不能在.h
文件中直接引入三方文件的!
4.2 解决办法
① 如无必要,尽量在.m
文件中声明 eg:#import "AFNetworking.h"
② 如果一定要暴露三方库才有的参数或接口 #import <AFNetworking/AFNetworking.h>
不断排错,不断验证,直到出现下面的结果:
恭喜你,即将踏上公有库创建成功之路了!
5、打tag标签,提交到远程仓库
git tag -a '1.0.0' -m '第一次提交'
git push --tag #推送tag到远端仓库
在此之前,需要先提交一次代码,然后打标签,相关git命令行操作自行百度,也可以使用sourceTree提交
6、发布自己的库描述文件.podspec至cocoapods
完成上面,仅代表你已经上传成功,通过pod search ZQNetworking
找不到的,也无法使用
pod trunk push ZQNetworking.podspec --allow-warnings
发布到cocoaPods,之后还需要更新本地的search_index.json文件
//pod setup成功后生成的~/Library/Caches/CocoaPods/search_index.json文件, 是用来查找的索引文件
rm ~/Library/Caches/CocoaPods/search_index.json
或者
pod repo update
//并再次输入:
pod search ZQNetworking
成功!
6.1 遇到的问题
其实,我并没有成功 = =|| ,我遇到了重名的问题!!!
没办法,重新来一遍
7、更新维护podspec
后续需要版本迭代,修改工程文件后推送到远端仓库后, 需要修改podspec中的版本号, 并重新打tag上传, 再进行新一轮的验证和发布。(重复5-6操作)