最近在重构自己的项目,想要把自己平时常用的框架封装出来,因为比较懒,项目工程都是用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文件
1
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文件,文件内如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
证书类型,一般为 MITs.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文件
- 注册pod账号
$ pod trunk register xxxx@gmail.com '用户名' --verbose
- 之后会收到一封激活邮件,激活了就可以使用了
- 使用终端,进入项目根目录,验证podspec 文件
//忽略所有警告
pod spec lint XZCategoryTool.podspec --allow-warnings
或者使用这个。显示具体问题。以及忽略所有警告
//pod spec lint XZCategoryTool.podspec --verbose --allow-warnings
- 验证成功之后如图
- 使用下面的命令提交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模式封装起来,使其更加容易使用