Mephisto

个人站

欢迎来到我的个人站~


创建自己的Cocoapods项目

最近在重构自己的项目,想要把自己平时常用的框架封装出来,因为比较懒,项目工程都是用Cocoapods导入的,所以这次也使用Cocoapods来管理自己的工具类.

注册github账号,并且添加一个项目

  • 注册 gitthub账号
  • 添加一个项目,设置证书为 MTL

  • 开始本地工程的配置
  • 将创建的 github项目拉取到本地,将自己创建好的工程拷贝到 github项目中(ps:因为不想用 git命令,本人使用的是 github 提供的 github desktop工具):
  • 登录以后在这里面找到自己创建的项目

  • 然后选择保存在本地的位置

  • 将自己的工程项目拷贝到该文件夹

  • 自己的文件工程目录如图所示,红色框的是自己需要分享的代码文件,旁边的 CategoryToolDemo为完整的工程项目

一切准备就绪以后就开始配置 podspec文件吧!

创建和配置podspec文件

1.打开终端,使用cd命令进入文件根目录,比如:cd /Users/mac/Desktop/gittub/CategoryTool ,Users/mac/Desktop/gittub/CategoryTool是我工程所在的根目录

2.在终端中输入以下命令创建 podspec文件

  $ pod spec create XZCategoryTool(自己的项目名)

3.项目工程打 tag, 将文件 push 到 github 自己创建的项目中去

进入源代码根目录

cd /Users/mac/Desktop/gittub/CategoryTool

新建一个tag git tag 0.0.1

tag推送到远端 git push origin 0.0.1

4.然后向github提交自己的更改:

5.配置 podspec文件,文件内如下

Pod::Spec.new do |s|
  s.name         = "XZCategoryTool"  
  s.version      = "0.0.1"			
  s.summary      = "A short description of XZCategoryTool."
  s.description  = <<-DESC
  							项目描述
                    DESC
	
  s.homepage     = "https://github.com/Mephsito23/CategoryTool"
  # s.screenshots  = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
  
  s.license      = "MIT"
  s.author             = { "mephsito" => "xiezefu@outlook.com" }
  s.platform     = :ios, "8.0"
	
  s.source       = { :git => "https://github.com/Mephsito23/CategoryTool.git", :tag => "#{s.version}" }
  s.source_files  = "XZCategoryTool/*.{h,m}", "XZCategoryTool/**/*.{h,m}","XZCategoryTool/XZCategoryTool.h"
  
  # s.resource  = "icon.png"
  # s.resources = "Resources/*.png"
	
  # s.framework  = "SomeFramework"
  # s.frameworks = "SomeFramework", "AnotherFramework"
	
  # s.library   = "iconv"
  # s.libraries = "iconv", "xml2"
  
  # s.dependency "JSONKit", "~> 1.4"
  	
end

各个参数的含义如下:

  • s.name 声明库的名称
  • s.summary 对这个库的简短说明介绍
  • s.version 当前库的版本
  • s.homepage 声明库的主页
  • s.license 证书类型,一般为 MIT
  • s.author 作者
  • s.platform 库运行的平台和支持的最低系统版本
  • s.source 库的仓库地址以及版本号或者committed等
  • s.source_files 声明库的源代码的位置,库的路径(一般是相对路径)里面的文件会进行编译。
  • s.resources 存放我们不想参与编译的资源文件
  • s.frameworks 声明了库所依赖的系统核心库
  • s.dependency 我们开发的库中也可能还依赖第三方库,例如ReactiveObjC, AFNetworking,可以这样写
  • s.dependency "ReactiveObjC",
  • s.dependency "AFNetworking",

s.source_files的写法,第一次的时候写了好久都不对,验证的时候一直报错,所以在这里单独写一下,首先自己需要分享的文件是根目录XZCategoryTool里面的所有文件,该文件夹下的结构如下:

大概就是这样子,所以s.source_files的写法为 "Class","Class/**/*.{h,m}",这种格式,Class是你的根目录文件名,**指匹配任意文件夹,*.{h,m}指以.h或者.m结尾的文件,多个文件用""包裹起来,用,隔开,比如自己的项目的写法如下:

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

需要注意的是,*.{h,m}匹配的是一对文件,如果出现单个,比如说在我的根目录中有个XZCategoryTool.h头文件,只有.h文件,没有.m,则需要重新写一个,还有就是s.version填写的版本号需要和开始使用git创建的’tag’值保持一致.

编辑完成以后,将podspec文件提交到 github上,然后开始podspec的验证和提交 trunk.

验证和提交podspec文件

  1. 注册pod账号

$ pod trunk register xxxx@gmail.com '用户名' --verbose

  1. 之后会收到一封激活邮件,激活了就可以使用了
  2. 使用终端,进入项目根目录,验证podspec 文件

//忽略所有警告 pod spec lint XZCategoryTool.podspec --allow-warnings

或者使用这个。显示具体问题。以及忽略所有警告 //pod spec lint XZCategoryTool.podspec --verbose --allow-warnings

  1. 验证成功之后如图

  1. 使用下面的命令提交podspec文件,需要梯子…

$ pod trunk push XZCategoryTool.podspec --allow-warnings

6.上传成功以后,使用pod setup 来更新索引,然后用pod search XZCategoryTool来查看自己的 Cocoapods项目,但是一般情况下好像都搜不到…不过没有关系,pod search以后,直接新建一个工程,在Podfile文件中写入,是可以直接导入工程的,比如:pod 'XZCategoryTool','~>0.0.4'

到此,自己的第一个Cocoapods项目就制作完成了,以后有时间的话看看能不能把自己所用的 MVVM模式封装起来,使其更加容易使用

自己的 Demo

参考文档:

  1. http://www.jianshu.com/p/c6c258a7a3b8
  2. http://www.jianshu.com/p/fbd4177dbc6d
最近的文章

Python中 os模块相关函数的使用方法介绍

前几天自己写脚本程序的时候有用到了相关知识,但是网上的都不太全面,故此收集整理下…

python继续阅读
更早的文章

Xcode 8去除多余打印

转眼间 Xcode 9都已经快出正式版了,不过今天一个朋友问到这个问题,回去找了老半天的记录才翻到解决方法,特在此记录一下:Xcode 8新建工程以后如果默认不设置,会在控制台打印一堆无用的东西,屏蔽方法如下,在Xcode8里边 Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加OS_ACTIVITY_MODE = Disable这样设置以后就可以去除多余的打印了,但是会有一个问题,真机调试时也获取不到打印信息,...…

iOS继续阅读