美文网首页
制作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