美文网首页
制作Github上的开源库

制作Github上的开源库

作者: LYajun | 来源:发表于2018-03-12 17:27 被阅读0次

前言

  作为一个程序猿看到pod上各种形形色色的三方库,自己肯定也会想要制作一个分享一下。做组件化时也会想要将项目拆分成一个一个的私有库。
以下均以我自己写的一个开源库YJReaderTool去介绍.

目录

  • Github上创建仓库
  • 创建podspec文件
  • 编写podspec文件
  • 代码上传git远程仓库
  • Github上创建release版本
  • 注册CocoaPods账号
  • 上传代码到CocoaPods
  • 检查上传是否成功

1.Github上创建仓库

创建YJReaderTool仓库,如下图:

Snip20180309_5.png

这里注意那个MIT License,在后面添加Cocoapods支持的时候会用到(稍后介绍)。然后点击创建即可。
然后用SouceTree将代码down到本地,将自己的项目放到里面,文件夹如图所示:


Snip20180309_6.png

这里的LICENSE就是刚才说的MIT License添加的文件。YJReaderToolemo是示例工程,YJReaderTool就是提供给他人使用的库。

2.创建podspec文件

创建podspec文件只需要一行命令,在你自己的三方库的根目录下输入下面的命令:


Snip20180309_7.png
pod spec create YJReaderTool

然后在项目目录下将会生成一个podspec文件

3.编写podspec文件

我们先来打开YJReaderTool.podspec文件看看里面的内容。


Snip20180309_8.png

一些常用的信息介绍:

name:框架名
version:当前版本(注意,是当前版本,假如你后续更新了新版本,需要修改此处)
summary:简要描述,在pod search ZCPKit的时候会显示该信息。
description:详细描述
homepage:页面链接
license:开源协议
author:作者
source:源码git地址
platform:支持最低ios版本
source_files:源文件(可以包含.h和.m)
public_header_files:头文件(.h文件)
resources:资源文件(配置的文件都会被放到mainBundle中)
resource_bundles:资源文件(配置的文件会放到你自己指定的bundle中)
frameworks:依赖的系统框架
vendored_frameworks:依赖的非系统框架
libraries:依赖的系统库
vendored_libraries:依赖的非系统的静态库
dependency:依赖的三方库

你在三方库中看到的那些文件都是通过这些配置来确定的。当pod install引入三方库时,只会引入你在podspec中配置的那些文件。

下面我会举例说明该如何写podsepc中的每项配置。


Snip20180309_10.png

目录结构如下


Snip20180309_9.png

如图所示的目录结构,每个配置项的写法如下:

source_files:配置三方库的源文件(.h或.m文件)

写法:
source_files = 'YJReaderTool/Classes/xxx.{h,m}' // 直接指定文件名
或:
source_files = 'YJReaderTool/Classes/*.{h,m}' // Classes文件夹下的所有匹配文件
source_files = 'YJReaderTool/Classes/**/*.{h,m}' // Classes所有路径下的所有匹配文件

public_header_files:配置公有的头文件(.h文件)

写法:
source_files = 'YJReaderTool/Classes/xxx.h' // 直接指定文件名
或:
source_files = 'YJReaderTool/Classes/*.h' // Classes文件夹下的所有匹配文件
source_files = 'YJReaderTool/Classes/**/*.h' // Classes所有路径下的所有匹配文件

vendored_frameworks:配置需要引用的非系统框架

写法:
vendored_frameworks = 'YJReaderTool/Frameworks/xxx.framework'

frameworks:配置依赖的系统框架

写法:
frameworks = 'AVFoundation', 'CoreGraphics', 'Security', 'SystemConfiguration'

vendored_libraries:配置需要引用的非系统静态库(要注意,这里的.a静态库名字必须要带lib前缀,如果引用的静态库名字没lib前缀会导致编译报错,只需要重命名加上即可)

写法:
vendored_libraries = 'Frameworks/xxx.a'

libraries:配置依赖的系统库(要注意,这里的写法需要忽略lib前缀)

写法:
libraries = 'c++', 'sqlite3', 'stdc++.6.0.9', 'z'

resources:配置资源文件(.bundle,.png,.txt等资源文件,这些资源文件会被放到mainBundle中,要注意避免发生命名重复的问题)

写法:
resources = 'YJReaderTool/Assets/YJReaderTool.bundle'

resource_bundles:配置指定bundle的资源文件(可以解决resources导致的命名冲突问题)

写法:
resource_bundles = {
    'XXXBundle' => ['YJReaderTool/Resources/xxx.bundle'],
}

dependency:依赖的三方库,pod库或者可以是自身的subspec

写法:
dependency 'AFNetworking', '~>3.1.0' // pod三方库
dependency 'Util' // 自身的subspec
或
dependency 'AFNetworking'

4.代码上传git远程仓库

git push origin master

5.Github上创建release版本

打开项目的目录,然后创建release版本的类库:


Snip20180312_12.png

点击 箭头指向开始创建release版本,(点击 Create a new release):


Snip20180312_13.png
点击Publish release即可。创建完成后如图所示:
Snip20180312_14.png

6.注册CocoaPods账号

pod trunk register 邮箱地址 ‘用户名’ —description='描述信息'

此时会发送了一个验证码到邮箱,你可以打开你的邮箱验证即可。打开邮件中的链接后如下:


Snip20180312_15.png

这样就成功注册了Cocoapods账号。可以用

pod trunk me

检查是否创建成功。

7.上传代码到CocoaPods

首先检测文件格式的有效性:

pod spec lint

如果有警告。可以使用 --allow-warnings忽略:

pod spec lint --allow-warnings

出现passed validation就说明通过验证了。然后执行:

pod trunk push YJReaderTool.podspec  --allow-warnings

执行结果如下:(速度应该有的慢)


Snip20180312_17.png

说明了已经上传成功。

8.检查上传是否成功

使用

pod search YJReaderTool

相关文章

网友评论

      本文标题:制作Github上的开源库

      本文链接:https://www.haomeiwen.com/subject/motmfftx.html