美文网首页
Git创建私有库

Git创建私有库

作者: 幻梦_ | 来源:发表于2018-01-19 16:34 被阅读0次

    个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开源库一样在CocoaPods中管理它们,那么通过私有仓库来管理就很必要。大家没有安装CocoaPods或者对于CocoaPods还不太熟悉的,建议参考一下唐巧的博客或者直接到CocoaPods的官网看看:https://cocoapods.org/

    GitHub私有库是付费用户,所以我使用了其他Git服务,我使用的是码云,当然还有其他的可供选择开源中国、CSDN Code,cocoachina,以及gitlab

    首先在码云或gitlab上创建一个空项目,这里给个名字是MyTestLib.


    创建.png
    创建完成.png

    一.在终端执行如下命令

    /这个命令的作用:(1).创建本地仓库.(2)同第1步创建的github项目关联起来
    //pod repo add 私有库名字 码云项目地址
    pod repo add MyTestLib https://gitee.com/asdfasdwed/MyTestLib.git 
    
    image.png

    二、我们开始创建项目
    1.cd 到我们想要存放项目的目录

    //这个命令的作用是创建一个pod项目,它会自动给你生成spec文件,后面需要更改这个文件
    pod lib create MyTestLib
    

    2、根据自己的需求设置项目信息

    • 你想用什么语言?swift/ObjC
    • 您想要在您的库中包含一个演示应用程序吗?
    • 您将使用哪些测试框架
    • 你想做基于视图的测试吗
    • 你的类前缀是什么


      image.png

      3、成功之后会自动创建一个带有MyTestLib.podspec项目


      image.png
      4、Classes:存放类文件,默认会有一个ReplaceMe.m文件,
      image.png

      我们只需要把类文件代码放入Classes文件中,如果需要查看更改后demo效果,cd Example文件中pod update更新一下库即可.
      5、修改MyTestLib.podspec文件

    Pod::Spec.new do |s|
      s.name             = 'MyTestLib'
      s.version          = '0.1.0'
      s.summary          = 'MyTestLib.'
      s.description      = <<-DESC MyTestLib描述 DESC
      s.homepage         = 'https://gitee.com/asdfasdwed/MyTestLib'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'ZJHGGHub' => 'zjh13785@163.com' }
    #需要修改远程服务器地址也就是码云仓库地址
      s.source           = { :git => 'https://gitee.com/asdfasdwed/MyTestLib.git', :tag => s.version.to_s }
    s.ios.deployment_target = '8.0'            #支持的平台及版本
      s.requires_arc = true                   #是否使用ARC,如果指定具体文件,则具体的问题使用ARC
      s.source_files = 'MyTestLib/Classes/**/*'  #这个很重要,指定资源文件,前缀就是.podspec文件当前路径,只用写之后的路径,如Class/*是指Class文件夹下的所有文件,但不包括子文件夹里面的文件、Class/**/*是指包含所有Class文件夹下的文件,包括子文件、Class/**/*.{h,m}是指包含所有Class文件夹下的后缀为.h或.m的文件,当然也可以指定文件。
     #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
     # s.resource_bundles = {
     #   'PodTestLibrary' => ['MyTestLib/Assets/*.png']
     # }                                       #资源文件地址
     # s.public_header_files = 'MyTestLib/Classes/**/*.h'   #公开头文件地址
     # s.frameworks = 'UIKit'                  #所需的framework,多个用逗号隔开
     # s.dependency 'AFNetworking', '~> 2.3'   #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
    

    如果你编写的库文件需要多个子文件夹*.podspec文件可以参考下面如不需要可直接跳过看第6步

    image.png
    Pod::Spec.new do |s|
      s.name             = 'NetworkTools'
      s.version          = '1.2.0'
      s.summary          = 'NetworkTools.'
      s.description      = "NetworkTools ..."
      s.homepage         = 'https://gitee.com/ZHDreams'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'ZJHGGHub' => 'zjh13785@163.com' }
      s.source           = { :git => 'https://gitee.com/ZHDreams/NetworkTools.git', :tag => s.version.to_s }
      s.ios.deployment_target = '8.0'
      
      s.subspec 'ZHNetTool' do |ss|
          ss.dependency 'ReactiveObjC', '~> 3.0.0'
          ss.dependency 'AFNetworking', '~> 3.1'
          ss.source_files = 'NetworkTools/Classes/ZHNetTool/**/*'
      end
      
      s.subspec 'ZHMJRefsh' do |ss|
          ss.dependency 'MJRefresh', '~> 3.1.12'
          ss.source_files = 'NetworkTools/Classes/ZHMJRefsh/**/*'
      end
    

    6、编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令pod lib lint --allow-warnings --verbose

    image.png

    7、验证成功后开始提交我们的项目到码云服务器
    依次执行下面代码

    //这里是链接你码云服务器的仓库地址
    git remote add origin https://gitee.com/asdfasdwed/MyTestLib
    git add . 
    git commit -m "提交信息"
    git push origin master
    //注意:如果你创建项目的时候生成了README或者license文件,那么这里你push的时候可能会push不了,这里的话可以用
    git push origin master -f 强制提交,会覆盖之前的文件
    //为仓库打tag(很重要),而且这个tag必须和spec文件中的版本一致
    git tag -m "版本" 0.1.0
    //提交版本
    git push --tags
    //最后将你的spec文件push到远程私有库进行管理
    pod repo push MyTestLib MyTestLib.podspec --allow-warnings
    
    image.png
    image.png

    大功告成私有库创建完成

    三、测试私有pod,新建一个项目,然后进入到项目文件中

    • pod init
    source 'git@gitee.com:ZHDreams/Spec.git' //码云Spec文件存放仓库
    #source 'https://github.com/CocoaPods/Specs.git' //如有第三方库依赖例如AFNetworking时,添加af Spec文件存放仓库
    # platform :ios, ‘8.0’
    target 'Test' do
    pod 'MyTestLib', '~>0.1.0'
    end
    

    pod install


    image.png

    安装私有库遇到的一些问题解决

    问题1、pod search 未找到库时出现[!] Unable to find a pod with name, author, summary, or description matching

    解决:rm ~/Library/Caches/CocoaPods/search_index.json
    然后重新搜索 pod search

    问题2、使用pod repo push Spec 命令提交远程索引文件报错信息

    [!] The repo Spec at ../../../.cocoapods/repos/Spec is not clean

    解决:1

    cd ~/.cocoapods/repos/Spec
    git clean -f

    解决:2

    删除Spec本地索引重新添加
    pod repo remove Spec
    pod repo add Spec git@gitee.com:ZHDreams/Spec.git

    这里感谢未来行者的博客CocoaPods私有库

    相关文章

      网友评论

          本文标题:Git创建私有库

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