iOS 开发创建CocoaPods公有库以及subspec分支功能

栏目: IOS · 发布时间: 6年前

内容简介:阐述用CocoaPods使用框架的过程图三、开发框架项目的创建

一、主要内容

  • 1.1、阐述用CocoaPods使用框架的过程图

  • 1.2、开发框架项目的创建

  • 1.3、创建框架描述 spec

  • 1.4、上传 spec 到gitHub的远程索引库

  • 1.5、查看自己在CocoaPods的注册信息

  • 1.7、使用自己的框架

二、阐述用CocoaPods使用框架的过程图

iOS 开发创建CocoaPods公有库以及subspec分支功能

阐述用CocoaPods使用框架的过程图

三、开发框架项目的创建

3.1、在gitHub创建一个仓库,名字自己起,我在这里取名为 JKGCDTimer,并生成其 https链接: https://github.com/JoanKing/JKGCDTimer.git

iOS 开发创建CocoaPods公有库以及subspec分支功能

新建仓库入口

iOS 开发创建CocoaPods公有库以及subspec分支功能

框架信息填写

iOS 开发创建CocoaPods公有库以及subspec分支功能

创建成功

  • 3.2、cd 进入桌面 ,在终端 clone 项目

git clone https://github.com/JoanKing/JKGCDTimer.git
  • 3.3、在你clone生成的JKGCDTimer文件夹里面创建项目 JKGCDTimer

提示: clone生成的文件夹名字必须和项目的名字一致

iOS 开发创建CocoaPods公有库以及subspec分支功能

在你clone生成的JKGCDTimer里面创建项目 JKGCDTimer

  • 3.4、在JKGCDTimer项目里面创建一个文件夹 JKGCDTimer

iOS 开发创建CocoaPods公有库以及subspec分支功能

  • 3.5、上传JKGCDTimer本地的文件 到本地仓库

// 进入本地文件夹
cd 文件夹路径  // 我这里是 cd 上图画红线的JKGCDTimer
// 把文件添加到 暂缓区
git add .
// 把代码提交到本地仓库 // 如果没建立本地 git ,那么久 `git init`建立本地的git仓库
git commit -m '提交内容说明'
  • 3.6、把本地的代码提交到github仓库

// 查看仓库名字
git remote 
// 添加关联仓库
git remote add origin https://github.com/JoanKing/JKRichText.git
//推送到github仓库 
git push origin master
  • 3.7、提示:如果在 2.5中的git remote add origin ---- 报错:fatal: remote origin already exists,处理办法如下

  • 1、先输入$ git remote rm origin

  • 2、再输入$ git remote add origin https://github.com/JoanKing/JKRichText.git 就不会报错了!

  • 3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section ‘remote.origin’. 我们需要修改gitconfig文件的内容

  • 4、找到你的github的安装路径,找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!

  • 3.8、3.5与3.6可以使用Xcode提交

iOS 开发创建CocoaPods公有库以及subspec分支功能

3.5 与 3.6 可以使用Xcode提交

提示:第一次提交会 弹出框 让你输入你的 gitHub名字与密码

四、创建框架描述 spec 文件

  • 4.1、有关 spce 文件里面的内容不懂的可以查看CocoaPods Guides

iOS 开发创建CocoaPods公有库以及subspec分支功能

CocoaPods Guides

  • 4.2、创建spec 文件(create后面的名字一般是你仓库的名字)

cd 进入桌面JKRichText文件夹
// 创建 spec 文件
pod spec create JKRichText

iOS 开发创建CocoaPods公有库以及subspec分支功能

创建spec 文件

  • 4.3、修改刚刚创建的 spec 文件,我创建的是 JKGCDTimer.podspec

iOS 开发创建CocoaPods公有库以及subspec分支功能

修改刚刚创建的 `spec` 文件

  • 4.4、spec里面的具体内容,也可以到 guides.cocoapods 的 podspec查看

iOS 开发创建CocoaPods公有库以及subspec分支功能

spec里面的具体内容

Pod::Spec.new do |spec|
   spec.name         = 'Reachability'
   spec.version      = '3.1.0'
   spec.license      = { :type => 'BSD' }
   spec.homepage     = 'https://github.com/tonymillion/Reachability'
   spec.authors      = { 'Tony Million' => 'tonymillion@gmail.com'}
   spec.summary      = 'ARC and GCD Compatible Reachability Class for iOS and OS X.'
   spec.source       = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }
   spec.source_files = 'Reachability.{h,m}'
   spec.framework    = 'SystemConfiguration'
   s.ios.deployment_target = "8.0"
end
  • self.name  名字 = 'JKGCDTimer'

  • self.version  版本 = '0.0.1' (这个在后面会阐述)

  • self.summary 简介 = "JKGCDTimer."

  • s.description(详细的描述) = "JKGCDTimer,这个是详细的描述,内容一定要比 summary 长,不然会报错"

  • s.homepage(框架的首页地址) = "https://github.com/JoanKing/JKGCDTimer"

iOS 开发创建CocoaPods公有库以及subspec分支功能

框架的首页地址

  • s.license(协议) = "MIT"

  • s.author(作者) = { "JoanKingWC" => "2318151015@qq.com" },前面写名字,后面写邮箱地址

  • s.ios.deployment_target = "8.0"

  • s.source(代码真正存放的地址) = { :git => "代码仓库的地址", :tag => "#{s.version}" },前面写代码仓库的地址:https://github.com/JoanKing/JKGCDTimer,后面写 版本号的tag,tag是放到 releases 里面的,一定要有

iOS 开发创建CocoaPods公有库以及subspec分支功能

release存放的tag

  • s.source_files(指定在pod install下载的内容) = "JKGCDTimer", "JKGCDTimer/**/*.{h,m}" ,JKGCDTimer是下载的文件夹,**匹配的是目录,*.{h,m}是匹配的所有文件,* 是通配符,重要提醒:"JKGCDTimer/*/.{h,m}" 中的JKGCDTimer要与spec在一个目录下,我这里写的是如下:

s.source_files  = "JKGCDTimer", "JKGCDTimer/JKGCDTimer/JKGCDTimer/**/*.{h,m}"

iOS 开发创建CocoaPods公有库以及subspec分支功能

s.source_files的解释

说明: 在pod install 导入项目的框架 仅仅是导入的 上图 3 文件夹 ,由此可知 s.source_files配置很重要

  • 4.5、提示:上面的内容咱们都写完了,还差最重要的 一 步,项目github仓库release里面还没有tag(tag就是对版本的别称),打tag如下:

// cd 进入 = JKGCDTimer 文件夹
cd JKGCDTimer
// 查看本地仓库有没有 tag
git tag
// 没有的话 设置tag,如果有的话就为当前master的打tag
git tag '0.0.1'
//  删除之前的 origin 项目关联
git remote rm origin
git remote add origin https://github.com/JoanKing/JKGCDTimer.git
// 提交指定 tag
git push origin 0.0.1   //  提交所有的标签 git push --tags

iOS 开发创建CocoaPods公有库以及subspec分支功能

设置tag,并提交tag

iOS 开发创建CocoaPods公有库以及subspec分支功能

gitHub中JKRichText仓库releases里面就会多一个0.0.1的tag

提示:在pod install 的时候导入的是 release 对应 tag里面的 JKGCDTimer 文件夹

五、上传 spec 到gitHub的远程索引库

  • 5.1、在 guides.cocoapods里面有一个 Getting setup with Trunk,注册 trunk,它的作用是能够让我们把本地的 spec 文件上传到 gitHub的远程索引库

iOS 开发创建CocoaPods公有库以及subspec分支功能

Getting setup with Trunk

// pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'
// orta@cocoapods.org: 写邮箱  ,下面是我写的
pod trunk register 2318151015@qq.com 'IronMan' --description='咨询'

iOS 开发创建CocoaPods公有库以及subspec分支功能

注册trunk

  • 5.2、做完上面的,你的邮箱会收到一封邮件!,打开邮件上的链接

iOS 开发创建CocoaPods公有库以及subspec分支功能

打开邮件上的链接

iOS 开发创建CocoaPods公有库以及subspec分支功能

在终端执行你的库名的:spec 文件名

在终端执行你的库名的:spec 文件名

我要执行的是:pod trunk push JKGCDTimer.podspec

  • 5.3、在 二 中的 spec 内容要填好。可以执行下面的命令来检查是否符合要求 ,不能有任何警告或错误,出现的常见错误

pod spec lint JKRichText.podspec

5.3.1、spec 验证通过

iOS 开发创建CocoaPods公有库以及subspec分支功能

spec验证通过

  • 5.3.2、如果你出现了error,那就逐个处理,下面仅仅展示一个错误的处理

iOS 开发创建CocoaPods公有库以及subspec分支功能

错误

解决方案就是去xcode设置里面,将Command line Tools设置一下,在Xcode>preferences>Locations里面,设置之后再运行终端即可

iOS 开发创建CocoaPods公有库以及subspec分支功能

解决方案g

  • 5.4、若发布成功,会更新 master repo,会出现有类似如下信息:

iOS 开发创建CocoaPods公有库以及subspec分支功能

发布成功提示

5.5、验证在CocoaPods上是否发布成功(也就是能够搜到),如果出现红色报错

iOS 开发创建CocoaPods公有库以及subspec分支功能

搜不到的情况

  • 解决办法:重新 创建本地cocoapods搜索库 来解决:,先删除本地Cocoapods里面的search_index.json文件

control + shift + G  输入 ~/Library/Caches/CocoaPods/search_index.json

iOS 开发创建CocoaPods公有库以及subspec分支功能

删除本地Cocoapods里面的`search_index.json`文件

  • 再次搜索时,会自动重新创建本地的索引库,也就是刚才删除的search_index.json 。时间会很慢,下载需要时间的,如果在搜一个框架找不到的时候,更新pod库:pod setup

  • 再次搜索 pod search 框架名,若能查找到,表示发布成功

iOS 开发创建CocoaPods公有库以及subspec分支功能

发布成功

  • 5.6、如果你想在别人的电脑上也能search到你的项目,让别人电脑上更新 master repos,强制更新。

pod setup

提示:如果别人的cocoapods是最新的,你可以copy他的 master,control+shift + G 输入~/.cocoapods/repos/master,拷贝 master就好了

  • 5.7、也可以在Cocoapods官网查看你的框架的状态,输入框架的名字即可,一般官网存在延迟,发布后不能立即搜出来,可能要等到第二天。

iOS 开发创建CocoaPods公有库以及subspec分支功能

在Cocoapods官网查看你的框架的状态

六、查看自己在CocoaPods的注册信息

pod trunk me

iOS 开发创建CocoaPods公有库以及subspec分支功能

查看自己在CocoaPods的注册信息

七、使用自己的框架(cocoapods),下面我们新建一个项目(JKTest),来使用

7.1、创建项目 JKTest

iOS 开发创建CocoaPods公有库以及subspec分支功能

创建项目 JKTest

7.2、创建 Podfile 文件

cd  进入 JKTest
# 创建 Podfile 文件
pod init
# 在Podfile文件里面输入要导入的框架
pod 'JKGCDTimer', '~> 0.0.1'

iOS 开发创建CocoaPods公有库以及subspec分支功能

Podfile的创建于导入框架

# 导入框架
pod install

iOS 开发创建CocoaPods公有库以及subspec分支功能

成功导入 JKGCDTimer

八、补充:subspec分支功能

8.1、先看我后面又创建的一个框架 JKOCProjectTool ,我们的目的就是要在 JKOCProjectTool 框架里面创建一个文件夹 JKUiviewExtension

iOS 开发创建CocoaPods公有库以及subspec分支功能

subspec分支功能效果

8.2、下面是我框架的结构

iOS 开发创建CocoaPods公有库以及subspec分支功能

我框架的结构

8.3、下面是 spec 文件信息的内容

Pod::Spec.new do |s|
    s.name         = "JKOCProjectTool"
    s.version      = "0.0.7"
    s.summary      = "OCTool."
    s.description  = "这是一个很好用的OC的 工具 类,我会不断的更新的"
    s.homepage     = "https://github.com/JoanKing/JKOCProjectTool"
    s.license      = "Apache License 2.0"
    s.author             = { "JoanKingWC" => "2318151015@qq.com" }
    s.ios.deployment_target = "8.0"
    s.source       = { :git => "https://github.com/JoanKing/JKOCProjectTool.git", :tag => "#{s.version}" }
    # s.public_header_files = 'JKOCProjectTool/JKOCProjectTool.h'
    s.source_files = 'JKOCProjectTool/JKOCProjectTool.h'
    s.subspec 'JKUiviewExtension' do |ss|
         ss.source_files = 'JKOCProjectTool/JKUiviewExtension/**/*'
         # ss.public_header_files = 'JKOCProjectTool/JKUiviewExtension/UIView+JKUiviewExtension.h'
    end
end

iOS 开发创建CocoaPods公有库以及subspec分支功能

spec内容的配置

提示:s.source_files 路径的寻找是以 JKOCProjectTool.podspec 为基准的,如果框架与JKOCProjectTool.podspec同目录的话直接写框架的文件夹名字,如若你有疑惑可以,CocoaPods搜JKOCProjectTool 看我的写法。

作者:IIronMan

链接:https://www.jianshu.com/p/b5a037a8e7c0


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Geometric Folding Algorithms

Geometric Folding Algorithms

Erik D Demaine / Cambridge University Press / 2008-8-21 / GBP 35.99

Did you know that any straight-line drawing on paper can be folded so that the complete drawing can be cut out with one straight scissors cut? That there is a planar linkage that can trace out any alg......一起来看看 《Geometric Folding Algorithms》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器