一、cocoapods公共仓库
1、查看 cocoapods 本地目录
使用 finder-->前往文件夹,输入:
~/.cocoapods/repos
跳转至本地cocoapods目录
cocoapods本地目录如下所示:
master:是cocoapods对应的公共git仓库
Myspecs:是自己创建的私有仓库地址(后面会提到如何创建)
二、搭建自己的pods私有库
1、创建私有的Spec Repo
1)在github上创建一个MySpecs仓库
具体步骤:登录github-->点击右上角“+”-->选择 new repository-->输入Repository name为MySpecs,选择仓库类型为 private,点击Create repository。
到此为止,MySpecs仓库创建好了
2)在终端执行命令,将仓库添加到~/.cocoapods/repos目录下
pod repo add mySpecs https://github.com/xxx/MySpecs.git
2、创建pods工程
1)在桌面创建一个test文件夹目录,并 cd 到test 目录
2)执行终端命令
pod lib create pod_test
显示如下,依次输入的次序:ios、swift、no、none、no
3)成功后,会在test目录下创建一个pod_test工程,目录如下
3、提交pods库到github上
1)首先在github创建一个私有仓库,步骤如二中1,命名为pod_test
2)cd到pod_test目录下,执行以下终端命令
$git init
$git add .
$ git commit -am "第一次提交"
//即第一个步骤中创建的仓库地址
$ git remote add origin https://github.com/xxx/pod_test.git
$ git push origin master
//一定要有标签,不然会有下面的警告
//podspec文件中获取Git版本控制的项目需要tag号,
$ git tag -m "first release" "0.1.0"
$ git push --tags
4、配置pod_test的podspec文件
1)通过test目录打开工程
2)找到pod_test.podspec文件,该文件在执行$pod lib create pod_test已经被自动创建
3)podspec文件格式如下
Pod::Spec.new do |s|
s.name = 'pod_test'
s.version = '0.1.0'
s.summary = '这是我第一个私有库项目demo'#需要修改的地方
# This description is used to generate tags and improve search results.
# * Think: What does it do? Why did you write it? What is the focus?
# * Try to keep it short, snappy and to the point.
# * Write the description between the DESC delimiters below.
# * Finally, don't worry about the indent, CocoaPods strips it!
s.description = <<-DESC
Add long description of the pod here.#需要修改的地方
DESC
s.homepage = 'https://github.com/chenjialin1016/pod_test'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'chenjialin1016' => '1109221208@qq.com' }
s.source = { :git => 'https://github.com/chenjialin1016/pod_test.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '8.0'
s.source_files = 'pod_test/Classes/**/*'
s.swift_version = '3.2'
# s.resource_bundles = {
# 'pod_test' => ['pod_test/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
end
关键字 | 说明 |
s.name | pod search 搜索的关键词,注意这里一定要和.podspec的名称一样 |
s.version | 版本号,每一个版本对应一个tag |
s.summary | 简介 |
s.homepage | 项目主页地址 |
s.license | 许可证 |
s.author | 作者 |
s.social_media_url | 社交网址 |
s.source | 项目的地址 |
s.source_files | 需要包含的源文件 |
s.resources | 资源文件 |
s.requires_arc | 是否支持ARC |
s.dependency | 依赖库 |
s.ios.deployment_target = '8.0' | 支持的pod最低版本 |
4)验证该podspec文件,cd到pod_test目录
pod spec相对于pod lib会更为精确,pod lib相当于只验证一个本地仓库,pod spec会同时验证本地仓库和远程仓库。
pod spec lint
当然我们验证时可以忽略这些警告,使验证通过
pod spec lint --allow-warnings
绿色文件代表podspec文件验证通过
5、在Example工程修改podfile文件
修改podfile文件,并执行 pod uodate
use_frameworks!
target 'pod_test_Tests' do
#pod 'pod_test', :path => '../'
pod 'pod_test', :path => '../pod_test.podspec'
end
6、把pod_test.podspec提交到MySpecs仓库
cd 到 pod_test目录,执行以下命令
pod repo push [本地Spec Repo名称][podspec文件路径]
$ pod repo push mySpecs pod_test.podspec
如果报一下错误(红色文字)
解决办法1:
cd ~/.cocoapods/repos/MySpecs,git clean -f
解决办法2:移除~/.cocoapods/repos/目录下的Myspec,执行添加命令,再重新执行提交
pod repo add mySpecs https://github.com/xxx/mySpecs.git
以下是提交成功的显示
打开~/.cocoapods/repos/目录下的Myspec,可以看到我们提交的,
在对应的spec仓库地址也能看到提交记录。
三、使用
新建一个工程,在项目的podfile里添加
#私有spec仓库的地址,而不是某个pod仓库的地址
source 'https://github.com/xxx/MySpecs'
pod 'pod_test'
再执行pod install,可以在新工程中的pods文件夹中看到 pod_test对应的文件夹。
到此,算是完成pods私有库的搭建了。
四、更新pods
例如:创建一个StringExtension.swift的文件,里面的实现的String的扩展
注意:
1、如果这个文件是需要对外公开的,需要在前面加上public
2、新建的文件必须放在Classes文件内
3)pods工程每次修改后,上传git(git上传前,需要在podspec文件修改版本号),都需要重新走一遍上面的3、4、6步骤,并且在主工程的调用中,需要将podfile.lock文件删除,重新pod install下新的版本
如何使用呢?
在主工程import pod_test,然后即可调用
五、发布spec
发布主要是用于公开的framework类的组件用于发布到cocopod
1、发布之前需要有cocopods trunk账号,注册密令如下:
$ pod trunk register [Your-Email] '[Your-Name]' --description='[Your-Desc]'
> [Your-Email]: 任意邮件
> [Your-Name]: 推荐使用github上使用的Name
> [Your-Desc]: 使用电脑的描述
// eg:
$ pod trunk register xxxx@163.com 'pod_test' --description='pod_test'
// 注册完成后,[pod trunk me]查看信息
$ pod trunk me
2、验证podspec:pod spec lint
3、发布podspec
$ pod trunk push [NAME].podspec
或者
$ pod trunk push [NAME].podspec --allow-warnings
4、成功发布后,看看能不能search到
/ 先更新一下repo
$ pod repo update
$ pod search 'pod_test'