创建一个自己的 pod 大致需要以下步骤

  1. 创建git repository
  2. 编辑.podspec
  3. 创建LICENSE(许可证/授权)文件
  4. 标记 tag
  5. 验证
  6. 注册CocoaPods
  7. 发布
  8. 搜索验证

1.代码提交到github平台

在 git 平台创建自己的 repository,例如 ‘AGNetworking’

git init AGNetworking

项目创建之后,添加 README.md 文件

2.编辑.podspec

然后cd到项目的目录,执行命令,也可以使用vim创建,只要创建就可以了

// 注 AGNetworking 是框架的名称,也是 pod 用来搜索的名称
$ pod spec create AGNetworking

创建好后打开,内容如下

Pod::Spec.new do |s|
s.name = "AGNetworking"
s.version = "0.0.1"
s.summary = "A delightful networking framework."
s.homepage = "https://github.com/JumpJumpSparrow/AGNetworking.git"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "cunfa" => "cunfamiao@163.com" }
s.source = { :git => "https://github.com/JumpJumpSparrow/AGNetworking.git", :tag => s.version }
s.source_files = "AGNetworking/AGNetworking/AGNetworking/AGNetworking.h"
s.requires_arc = true
end

接下来讲解一下每行代码的含义
s.name:名称,pod search 搜索的关键词,注意这里一定要和 .podspec 的名称一样,否则报错
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.homepage:项目主页地址
s.license:许可证
s.author:作者
s.social_media_url:社交网址,这里我写的微博默认是Twitter,如果你写Twitter的话,你的podspec发布成功后会@你
s.source:项目的地址
s.source_files:需要包含的源文件
s.resources: 资源文件
s.requires_arc: 是否支持ARC
s.dependency:依赖库,不能依赖未发布的库
s.dependency:依赖库,如有多个可以这样写
例如

s.dependency  = 'AFNetworking'

s.license= { :type => "MIT", :file => "LICENSE" }
这里建议大家这样写,如果写别的会报警告,导致后面一直提交失败

  • source_files:写法及含义建议大家写第一种或者第二种
"AGNetworking/*"
"AGNetworking/*.{h,m}"
  • “*” 表示匹配所有文件

  • “*.{h,m}” 表示匹配所有以.h和.m结尾的文件

  • “**” 表示匹配所有子目录

  • s.source 常见写法

s.source = { :git => "https://github.com/JumpJumpSparrow/AGNetworking.git", :commit => "68defea" }
s.source = { :git => "https://github.com/JumpJumpSparrow/AGNetworking.git", :tag => 1.0.0 }
s.source = { :git => "https://github.com/JumpJumpSparrow/AGNetworking.git", :tag => s.version }
  • commit => "68defea" 表示将这个Pod版本与Git仓库中某个commit绑定
  • tag => 1.0.0 表示将这个Pod版本与Git仓库中某个版本的comit绑定
  • tag => s.version 表示将这个Pod版本与Git仓库中相同版本的comit绑定

3.创建LICENSE(许可证/授权)文件,此文件必须要有

只需要把前面的版权改一下就行了,后面的都一样

创建一个文件名字命名为LICENSE,内容为:

Copyright (c) 2011-2016 AGNetworking Software Foundation (https://github.com/JumpJumpSparrow/AGNetworking.git)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

将包含配置好的 .podspec, LICENSE 的项目提交 Git

4.打tag

因为cocoapods是依赖tag版本的,所以必须打tag,
以后再次更新只需要把你的项目打一个tag
然后修改.podspec文件中的版本接着提交到cocoapods官方就可以了,提交命令请看下面

  • 执行命令
//为git打tag, 第一次需要在前面加一个v
git tag "v0.0.1"
//将tag推送到远程仓库
git push --tags

给 repository 打tag,cd 到 项目的目录下

git tag 0.0.1 -m '备注消息'

然后把打好的 tag push 到 远端 仓库

git push origin --tags

然后在git上就能看到 打的tag了

5.验证.podspec文件

  • 到此检查一下你工程下面的文件, 你的项目, .podspec文件, LICENSE文件
  • 验证会先测试本地 .podspec 文件是否存在语法错误.

    然后执行命令

// --verbose 如果验证失败会报错误信息
pod spec lint AGNetworking.podspec

验证过程中:

-> AGNetworking

验证成功后:

AGNetworking.podspec passed validation.
 
如图

验证失败:

[!] The spec did not pass validation, due to 1 error.

这个过程会出现很多错误,这里不一一列举,大家按照错误信息自行修改,不过一般不会出现错误,只要你按照步骤做,基本上是没有问题的

清除缓存

pod cache clean --all 清除缓存

6.注册Trunk

trunk需要CocoaPods 0.33版本以上,用pod --version
命令查看版本,

  • 如果版本低,需要升级:
sudo gen install cocoapods
pod setup
  • 已经注册过的不需要注册,怎么看自己有没有注册
pod trunk me
  • 我的注册信息
-Name:     coderYJ
- Email: xxxxxxx
- Since: August 12th, 04:37
- Pods:
- AGNetworking
- Sessions:
- August 12th, 04:37 - Unverified. IP: 113.111.64.45
Description: macbook pro
- August 12th, 04:39 - December 18th, 21:11. IP: 113.111.64.45
Description: macbook pro
  • 注册
// 加上--verbose可以输出详细debug信息,方便出错时查看。
pod trunk register cunfamiao@163.com "JumpJumpSparrow" --verbose

注册完成之后会给你的邮箱发个邮件,进入邮箱邮件里面有个链接,需要点击确认一下

7.发布 pod

发布时会验证 Pod 的有效性

pod trunk push AGNetworking.podspec 

发布成功后的信息,终端中的信息

localhost:AGNetwork suning$ pod trunk push AGNetworking.podspec

Ignoring executable-hooks-1.5.0 because its extensions are not built.  Try: gem pristine executable-hooks --version 1.5.0

Ignoring gem-wrappers-1.4.0 because its extensions are not built.  Try: gem pristine gem-wrappers --version 1.4.0

Ignoring nokogiri-1.9.1 because its extensions are not built.  Try: gem pristine nokogiri --version 1.9.1

/usr/local/Cellar/cocoapods/1.5.3/libexec/gems/cocoapods-1.5.3/lib/cocoapods/executable.rb:89: warning: Insecure world writable dir /opt/play/default in PATH, mode 040777

Updating spec repo `master`

CocoaPods 1.7.0.beta.2 is available.

To update use: `gem install cocoapods --pre`

[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.7.0.beta.2

Validating podspec

-> AGNetworking (0.0.1)

- NOTE  | xcodebuild:  note: Using new build system

- NOTE  | xcodebuild:  note: Planning build

- NOTE  | xcodebuild:  note: Constructing build description

- NOTE  | xcodebuild:  warning: Skipping code signing because the target does not have an Info.plist file. (in target 'App')

Updating spec repo `master`

CocoaPods 1.7.0.beta.2 is available.

To update use: `gem install cocoapods --pre`

[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.7.0.beta.2

--------------------------------------------------------------------------------

创建 个人 pod的更多相关文章

  1. Docker Kubernetes 创建管理 Pod

    Docker Kubernetes 容器扩容与缩容 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  2. kubenetes创建一个pod应用

    Pod是可以创建和管理Kubernetes计算的最小可部署单元.一个Pod代表着集群中运行的一个进程.每个pod都有一个唯一的ip. 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker) ...

  3. 3.创建一个pod应用

    创建一个应用:k8s增删查改: pod创建:kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1 [roo ...

  4. 如何创建私有pod三方库

    1.先登录github或者开源中国码云,创建远程仓库,用来存放库文件代码 仓库创建完成,得到远程仓库地址,并保存备用 2.创建本地代码库 打开终端,cd到你想创建的文件夹下,使用命令:pod lib ...

  5. kube-batch 创建的pod 一直是Pending

    官网的例子 apiVersion: batch/v1 kind: Job metadata: name: qj-1 spec: backoffLimit: 6 completions: 6 paral ...

  6. 创建podSpec,使用pod管理第三方库

    提要: podfile文件会先读取.podspec文件,根据.podspec文件的指向来下载第三方库到项目中. 本文先通过一.二.三项,这三个步骤讲解了如何建立一个.podspec文件在本地.coco ...

  7. [CocoaPods]使用Pod Lib创建

    入门 我们将使用pod lib create引导过程来创建整个pod .那么让我们从初始命令开始: pod lib create MyLibrary 注意:要使用您自己的pod-template,您可 ...

  8. Kubernetes中pod创建流程

    转自:https://blog.csdn.net/yan234280533/article/details/72567261 Pod是Kubernetes中最基本的部署调度单元,可以包含contain ...

  9. kubectl 创建 Pod 背后到底发生了什么?

    原文链接:kubectl 创建 Pod 背后到底发生了什么? 想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run - ...

随机推荐

  1. java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?

    死锁.活锁.饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了. 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又 ...

  2. sql 传入参数为逗号分隔的字符串处理方法

    写了个存储过程,中间用到了类似这种写法 Select * From User Where ID In('1,2,3') 其中'1,2,3'是从外面传进来的参数,就这样执行报错:'1,2,3'转换为in ...

  3. 整理一下最近Android面试的提问

    java相关: 1. public protect private default关键字有什么区别? public:表示可以在任何一个类中被访问: protect:表示可以在自身.子类以及同一包下的类 ...

  4. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  5. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

  6. what's up ? docker, all right.

    Docker install 下载对应安装包,离线安装 Docker 需要 docker-engine.docker-engine-selinux.libtool-ltdl这三个软件包. 下面以安装 ...

  7. js实现查找字符串出现最多的字符和次数

    代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...

  8. 简说mvc路由

    首先我们通过在Global.asax中的Application_Start将路由信息注册到RouteTable的Routes静态属性中.如下代码所示: public class RouteTable ...

  9. Python学习---抽屉框架分析[小评论分析]0315

    注: 此处的小评论涉及数据库操作 初级小评论代码 settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS = (o ...

  10. Java学习---Excel读写操作

    1.1.1. 简介 Apache POI 使用Apache POI 完成Excel读写操作 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API ...