美文网首页
开源cocopods spec

开源cocopods spec

作者: nenhall | 来源:发表于2017-08-23 22:29 被阅读677次

    相关参考链接:
    手把手教你发布自己的cocoapods开源库
    【原】iOS:手把手教你发布代码到CocoaPods(Trunk方式)
    Publish Your Pods on CocoaPods with Trunk
    下面这一篇文章中说的方法是老版的方法,不过核心流程还是可以参考的
    CocoaPods详解之----制作篇

    开源cocopods spec

    我这里主要是记录当时操作的一些记录,初步的具体操作建议看上面的链接,更详细。

    更新开源项目cocopods spec版本:
    不管你的spec版本是否已经发布过一版还是第一次发布,在你改了项目里面的代码后你都必须像更新git代码一样先更新tag,只不过命令不同,具体如下:

    1、进入到工程有podspec文件的目录
    2、git tag 1.2 添加一个tag
    3、git add . && git commit -m 'Release 1.0.1' 添加新的release版本
    4、git push --tags 在github上添加tag并更新内容
    5、git push origin master 更新git、podspec中的version和tag
    6、提交到cocopods:
    pod trunk push NHBarScrollTool.podspec

    相关命令:

    # 查看所有的tag 
    $ git tag
    #删除local一个tag 
    $ git tag -d tagName
    # 删除remote tag "1.0.0"
    $ git push origin :refs/tags/1.0.0
    # 删除一个远程的tag
    $ git push origin –delete tag 《tagName》 
    # 将v0.1.2标签提交到git服务器
    $ git push origin v0.1.2 
    # 将本地所有标签一次性提交到git服务器
    $ git push origin –tags 
    $ git push --tags
    # push结束以后千万不能忘记打tag!!!而且tag值一定要和s.version保持一致!!!
    $ git tag -m "NHBarScrollTool" 0.1.0
    

    我之前没有执行如下两条set命令也push成功,但这一次一直不成功(提示"The source_files pattern did not match any file."错误),于是在网上有人说到要执行如下两条命令,果然成功了,因为当时我的文件路径(本地和网络git上),确定是没有错的。
    set the new version to 1.0.0 set the new tag to 1.0.0 (1.0.0要与podspec的version对应)
    这两条命令是为pod添加版本号并打上tag。然后执行pod验证命令:
    $ pod lib lint

    这里要注意一点,有时你写的podspec文件在后面push的时候会提示[iOS] file patterns: Thesource_filespattern did not match any fi错误,网上很多人都说是路径不对!其实在确认你的路径没问题的情况下还报这个错,

    1. 那就git 对应的tag下根本没有对应的podspec文件;
    2. 你进入到git 主页,按下图的方式点击对应的tag
    3. 进入对应的tag后,你后发现根本没有任何文件,所以肯定不会成功;
    image.png
    podspec工作说明:

    当你执行pod push或者验证(pod lib lint)的时候,pod会通过我们写的.podspec文件内的s.sources.source_files两个地址目录去查找对应pod文件,看如下示例:

      s.version      = "1.0.0"
      s.source       = { :git => "https://github.com/nenhall/NHNavigationItem.git", :tag => "#{s.version}" }
      s.source_files  = "NHNavigationItem/*.{h,m}"
    // 以这个文件为例:
    pod会去https://github.com/nenhall/NHNavigationItem这个地址的1.0.0 tag下的NHNavigationItem目录下找所有.h.m文件
    
    解决办法:

    在验证和上传你的podspec文件到trunk之前,需要将你的源码push到Github上,tag一个版本号并发布一个release版本,这样podspec文件中的s.source的值才能是准确的
    重新提交一个新版本:

    git add -A && git commit -m "Release 2.0.0"  
    git tag '2.0.0'  
    git push --tags  
    git push origin master
    
    这两条命令是为pod添加版本号并打上tag:
    set the new version to 2.0.0
    set the new tag to 2.0.0
    

    搜索不到自己的库

    如果搜索不到自己的库,可以尝试使用如下命令,新测有效:
    pod setup 然后再pod search NHHUDExtend,
    不行就往下执行
    pod repo update 然后再pod search NHHUDExtend
    如果还不行请使用:
    pod search NHHUDExtend --simple这个估计跟cocoapod的搜索算法有关。

    报错: ··· error: include of non-modular header inside framework module ··· [-Werror,-Wnon-modular-include-in-framework-module]

    解决办法:在pod lib lint 或者 pod spec lint 以及 pod repo push ....时候加上 --use-libraries

        pod lib lint --use-libraries
        #或者
        pod spec lint --use-libraries
        #当然,在提交的时候也要加上
        pod repo push <repoName> <podspec> --use-libraries
    

    错误参考链接
    pod所有权想着错误链接

    相关文章

      网友评论

          本文标题:开源cocopods spec

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