美文网首页
CocoaPods(repo是master) 上传自己的项目

CocoaPods(repo是master) 上传自己的项目

作者: 莪的世界木有如果 | 来源:发表于2018-08-31 17:11 被阅读16次

    第一步:在GitHub上面创建一个要放置代码的repository。步骤如图:

    创建repository

    创建完成后,会进入到如下界面:


    repository创建完成

    接下来就是在如上图的界面打tag,具体操作见图1~2

    图1

    点击图一中的release,如果没有创建过tag的话,则会出现create new release点击之后出现图二样式

    图2
    • 图二1处填写的是git上的tag,这个要和后面的xxx.podspec的version 对应(网上有说要加v的,本篇教程下是不需要)
    • 图二2处是这个tag的名称
    • 图二3处是这个tag对应的描述

    如果不想上github上面打tag的话,可以执行下面的语句

    git tag '0.1.0'
    git push --tags

    这个时候就需要在本地把这个repository库clone下来,建议使用GitHub desktop软件操作。

    下面介绍GitHub desktop软件的clone操作:

    • 1、打开软件GitHub desktop,然后在左上角找到file选项
    • 2、点击file选项,会弹出三个选项,选择第三个
    • 3、在弹出的选择框里就是你的GitHub上面的库,找到对应的clone就可以了

    第二步实现方式一 :

    • 1、打开clone下来的文件夹(命名为A,后面的A文件夹说的就是这个文件夹)

    • 2、打开终端,cd到A文件夹,然后终端输入:
      git clone https://github.com/wode0weiyi/ConfigPublicPod.git

    • 3、终端cd到ConfigPublicPod文件夹中,然后执行脚本./config.sh
      cd ConfigPublicPod
      ./config.sh
      (执行脚本后,会让你输入一系列参数,projectName要传到pod上的文件名,httpsRepo是步骤一中创建repository库的HTTPS地址,sshRepo就是repository库的ssh地址,homePage是repository库页面的地址栏地址)

    脚本执行完成后,你的项目中就有了xxx.podspec文件了,这个就是pod的配置文件,后续要传到pod上面去识别你的项目的。

    在xxx.podspec文件里面,你可以修改几个地方,一个就是支持版本:
    s.platform = :ios, "8.0"
    一个就是author用户:
    s.author={"用户名" => "GitHub账号"}
    s.version = "1.0.1"这个根据自己要提交到git上的版本进行变更。这里会遇到比较多的问题。最后会把遇到的一些问题总结下。

    这个时候,看文件目录:


    image.png

    针对第二步所说的步骤,下面介绍一个比较简单点,且目录清晰的步骤。

    第二步实现方式二

    • 1、cd到A目录下面,将你要上传的文件放到A目录下面。然后创建一个xxx.podspec文件夹。终端代码:
      touch 传到pod上的文件名.podspec
      然后用xcode打开xxx.podspec文件。将下面的代码复制到文件里面:
    #
    #  Be sure to run `pod spec lint BLAPIManagers.podspec' to ensure this is a
    #  valid spec and to remove all comments including this before submitting the spec.
    #
    #  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
    #  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
    #
    
    Pod::Spec.new do |s|
    
      # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
      s.name         = "WebRTCHelper"
      s.version      = "0.0.1"
      s.summary      = "WebRTCHelper."
      s.description  = <<-DESC
                        this is WebRTCHelper
                       DESC
      s.homepage     = "https://github.com/wode0weiyi/WebRTCHelper"
      s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
      s.author             = { "huzhihui" => "wonderfulhzh@163.com" }
      s.platform     = :ios, "8.0"
      s.source       = { :git => "https://github.com/wode0weiyi/WebRTCHelper.git", :tag => s.version.to_s }
      s.source_files  = "WebRTCHelper/*.{h,m}"
      s.requires_arc = true
    end
    
    

    对应的参数说明:

    name:传入pod的文件说明
    version:传入到pod上的版本,注意这里的版本一定要和git上面版本一致
    summary:简单描述
    description:详细描述
    homepage:前面创建的repository的地址,地址栏里的地址就可
    license:凭证,这个在创建repository的时候选择一下就行,见图创建repository
    author:发布者的信息,前面一个为用户名,后面一个为GitHub的账号
    platform:支持的版本
    source:资源信息,第一个引号里面的是repository的HTTPS地址,后面是tag,不用动。
    source_files:要传文件的目录
    requires_arc :是否支持ARC
    

    这里要重点注意的:

    source_files:这里要注意的是这里的路径是以xxx.podspec文件为根据,同级的话,就写文件名就好(一般要传pod的最外层文件夹和xxx.podspec文件是同级的)。往后多级的,逐级加。如果多个的话,就分组加,逗号隔开。下面针对各种情况给出范例:

    • 1、同级的文件夹B里面只有.h和.m文件
      source_files = "B/*.{h,m}"
    • 2、多级文件夹B/C/D(只有最后一级文件夹里面有.h和.m文件
      source_files = "B/C/D/*.{h,m}"
      -3、多级文件夹B/C/D,每个文件夹里面都有.h和.m文件
      source_files = "B/*.{h.m}","B/C/*.{h.m}","B/C/D/*.{h.m}"
      其中C D可以用**代替

    接下来就是验证xxx.podspec文件的正确性,终端cd 到xxx.podspec所在的文件夹,然后输入

    pod psec lint 或者pod spec lint --allow-warnings
    验证过程如果顺利的话,则会出现


    podspec验证

    这里验证会经常出现两个错误:

    • 错误1:file patterns: The ``source_files`` pattern did not match any file.
    • 解决方法: 先按照上面说的目录层级检查自己的目录层级,如果无误,还出现这个错误,就需要手动去对应的文件夹添加想要放到pod上面的文件了。
      (1)、打开

    /Users/Library/Caches/CocoaPods/Pods/External/你要传的项目文件

    如图:


    image.png

    (2)、我现在要放到pod上面的是WebRTCHelper文件,则删除掉图中2处的所有文件,然后在终端输入pod psec lint xxx.podsepc,当然错误还是存在;
    (3)、重新验证后这个时候发现图中2处会生成一个文件夹,点开这个文件夹,在里面把你要放到pod上面的文件复制一份放到里面,(例如图中的标3的文件夹)。然后再验证,这个错误就会没有了。当然具体问题还要具体讨论,这个是一个解决方法。

    • 错误2:是git上打的版本和podspec文件里面的version不一致
    • 解决方法:首先确认下自己在git上面有没有打包,可以通过在GitHub上查看,网页上打开你在GitHub上创建的repository,点击 release查看,如果打了tag的话,就会显示出来,如图:
      image.png

    podspec文件里面的version改成自己看到图中的1.0.0就可以了。

    注意事项

    A文件夹里面代码和xxx.podspec文件验证成功后,需要将所有的改动传到GitHub上面去,避免后面出现错误。
    这个操作可以在GitHub desktop软件上操作,步骤为:

    git更新
    • 1处如果A文件夹里面有数据或者文件修改,这里会展示出来,不需要操作
    • 2处是对这次代码文件提交的一个说明,必填。填好后,点击2处下面的Commit to master 按钮
    • 点击Commit to master 按钮后,完成后,点击3处的所在地方,然后等待就可以。

    最后一步:验证成功后,接下来就是上传到pods。

    在这之前,有一个好习惯就是验证下你现在要传到pod上面的文件名是否存在,比如我测试使用的是TestProject_2,验证方法很简单,就是pod搜索下看有没有即可

    pod search TestProject_2

    如果搜索到和你文件名一样的,这个时候你就要去改你的xxx.podspec文件里面的name属性了
    终端输入:

    pod trunk push xxx.podspec

    然后等待结果就好,这个过程,网速不好的话会失败。出现:

    pod失败

    成功后,看到终端输出如图:


    pod成功

    本篇说的pods公有库上传自己的项目的方式有点复杂,后面重新介绍了另外一种方式上传,相比起来,步骤少了很多,用起来也简单,且不容易出现source_files报错问题。有兴趣的可以点击链接查看在CocoaPods公有库(repo是master)里面添加自己的项目

    常见的错误请转到错误分析

    这篇说的是将自己的项目开源道pods上面,如果要创建自己的私有库,利用pod怎么去管理呢?请看CocoaPods私有库管理,可以用于组件化,还会说到pod上传项目,文件层级怎么来划分。

    相关文章

      网友评论

          本文标题:CocoaPods(repo是master) 上传自己的项目

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