美文网首页
创建cocopod私有库

创建cocopod私有库

作者: IOSMan | 来源:发表于2018-10-23 17:40 被阅读13次

    概述

    cocopod私有库是建立在git基础上的,必须先要有两个git地址:

    1.保存cocopod私有库的git地址。里面是你上传的私有库各个版本的podspec文件

    2.将要上传到私有库的项目git地址

    之后根据这两个git地址,与cocopod私有库产生连接,连接的关键就是项目中的.podspec文件

    创建步骤

    1. 创建两个git项目,一个用于存放本地私有库(mySpec),一个用于存放要上传的项目(demoTool)地址。在github,码云,gitlab创建都可以。
    2. 将pod远程仓库添加到本地:pod repo add myspec git地址。(其中myspec是你本地私有库的名字,可以任意。git地址是上一步创建的,你本地私有库对应的git地址)
    3. git clone下来用于存放项目的另一个git地址,在里面新建要上传的项目(例如:demoTool),
    4. pod spec create demoTool添加上传私有库的配置文件.podspec(podspec文件名要与项目名相同),会生成demoTool.podspec文件
    5. 在项目里面选择正确配置
      支持设备,支持最低版本,登录证书等,编译一下项目,确保没有error

    6. 编辑podspec文件(关键)

      可以用sublime text编辑
    
    Pod::Spec.new do |s|
    
      #项目名
      s.name         = "Tools"
    
      #项目版本,这个版本要和git tag 要相同
      s.version      = "3"
    
      #项目简介,要重新编辑,不然会报warning
      s.summary      = "Tools."
    
      #项目描述,要比s.summary长,不然会报warning
      s.description  = <<-DESC
                        this is Tools
                       DESC
    
      #项目主页地址
      s.homepage     = "https://gitee.com/D-James/Tools"
    
      #许可证   type:协议类型    file:协议文件名 或者另一种写法:s.license = "MIT License",创建项目的时候选的什么许可证就填什么
      s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
    
      #作者
      s.author       = "duan"
    
      #支持最低版本,要与项目中所选一致
      s.platform     = :ios, "8.0"
    
      #项目git地址,可以为ssh地址,也可以为http地址
      s.source       = { :git => "git@gitee.com:D-James/Tools.git", :tag => s.version.to_s }
    
      #需要上传到私有库的文件   这个地址是已项目地址为根目录地址。*.{h,m}指的是该目录下的所有.h.m文件
      s.source_files  = "Tools/Tools/**/*.{h,m}"
    
      #项目所依赖的资源地址,资源包括storyboard,xib,图片
      s.resources  = "Tools/Tools/**/*.{storyboard,xib}", "Tools/Assets.xcassets"
    
      #是否是RAC
      s.requires_arc = true
    
      #项目所依赖的三方库 依赖多个要写多个 s.dependency
      s.dependency "HLNetworking"
    
        end
        
    

    7.提交上传项目改动

        git add .  
        git commit -m "init version 1"  
        git push  
        git tag 1  //tag值要与podsec文件的s.version一致
        pod lib lint // 验证podsepc文件格式,验证项目确保项目能跑通
        git push --tags  //提交tag值
    

    8.最后将podspec文件上传到私有库

    pod repo push myspec --allow-warnings // myspec是私有pod仓库的名字,--allow-warnings是忽略警告
    注意:如果这一步没有上传成功,很有可能是你的podspec文件有问题,请仔细检查。

    9.调用

    修改podfile文件中,有两种方式:

    1.在头部添加

    source 'https://github.com/CocoaPods/Specs.git' #官方仓库的地址

    source 'http://git.jsjit.cn/ios/GCModular/ModuleSpec.git'http地址是你的私有库文件git地址

    2.pod ‘库名’, :path => '库地址'

    建议第一种,只用导入一次(前提是你的私有库地址都关联到source地址)。第二种每个私有库都需要引用地址

    最后关于报错:pod lib lint后的验证报错

    1.error: unknown type name

    在spec文件添加s.libraries = "c++","c"

    然后执行:pod lib lint --allow-warnings --use-libraries

    2.file not found with <angled> include; use "quotes" instead

    创建自己的库时依赖其它的库,引用的不对。正确的引用是 #import <YYModel/YYModel.h>把引用地址写全

    3.添加MRC文件

    non_arc_files = 'GCTool/GCTool/NetworkTool/Zresponse.pb.h','GCTool/GCTool/NetworkTool/Zresponse.pb.m'
    
    s.exclude_files = non_arc_files
    
    s.subspec 'no-arc' do |sp|
    
    sp.source_files = non_arc_files
    
    sp.requires_arc = false
    
    end
    

    4.会上传APPdelegate等无关文件的问题

    当推送的库中包含子文件夹的时候,可能会把APPdelegate等s.sourcefile指定路径以外的文件拉取到本地,有时是因为库内引用了APPdelegate,或是APPdelegate的分类,删掉APPdelegate的分类后,拉取库还是会有APPdelegate,这时把sourcefile对应的库的子文件夹依次写出上传,而不要用**,解决这个问题

    相关文章

      网友评论

          本文标题:创建cocopod私有库

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