pod 私有库

作者: 黄花菜先生 | 来源:发表于2017-05-07 11:31 被阅读3155次

    如何创建私有 CocoaPods 仓库

    制作 CocoaPods 依赖库

    cocoapods本地的类库更新方法

    使用私有Cocoapods仓库的中高级用法

    自定义podspec,资源问题解决

    1.podspec文件:

    Pod::Spec.new do |s|
      s.name         = "HHO2View"
      s.version      = "0.1.2"
      s.summary      = "HHO2View."
      s.description  = "纤细描述,哈哈哈哈"
      s.homepage     = "https://github.com/huanghuacaiCoder/HHO2View"
      s.license      = "MIT"
      s.author             = { "huanghuacai" => "285210549@qq.com" }
      s.platform     = :ios, '9.0'
      s.source       = { :git => "https://github.com/huanghuacaiCoder/HHO2View.git", :tag => "#{s.version}" }
      s.source_files  = "Classes/**/*.{h,m}"
      s.resource  = "Classes/HHImage.bundle"
      s.preserve_paths = "Classes/**/*.a"
      s.vendored_libraries = "Classes/**/*.a"
      s.requires_arc = true
      s.dependency 'AFNetworking', '~> 2.3'
      s.dependency 'CocoaAsyncSocket', '~>7.5.0'
      s.subspec 'Category' do |cs|
          cs.source_files = 'Classes/Category/**/*.{h,m}'
      end
    end
    

    2.podspec文件介绍

    * name      类库的名称
    * version   指定版本
    * license   开源协议
    * description  简单描述
    * homepage   个人主页
    * author 作者信息
    * source  指定git地址
    * platform 指定iOS版本
    * requires_arc  指定支持arc
    * vendored_frameworks 本地的frameworks
    * frameworks 指定需要使用的系统frameworks
    * preserve_paths 本地的.a库
    * vendored_libraries: 第三方.a文件
    * source_files 指定类库中的源码
    需要在source_files中指定要发布的源代码文件,这个项目的源代码都是在pod-library目录下面,因此我指定了获取pod-library目录下的所有的.h和.m文件
    如果你需要使用swift就需要指定目录下面的.swift文件,如果有c++源代码的还需要指定.mm文件。
    * resources 指定的资源在调用类库的项目中可以直接调用,和调用项目内的资源一样。
    * resource_bundles 把需要调用的资源编译到bundle来调用,
    

    3.podfile文件:

    target 'Test1' do
    
    source 'https://github.com/huanghuacaiCoder/HHSpecs.git'
    
    source 'https://github.com/CocoaPods/Specs.git'  #官方仓库的地址
    
      use_frameworks!
    
      pod ‘HHO2View’ 
    
    end
    

    4.常用终端命令

    生成公私钥对:ssh-keygen
    
    查看第三方框架仓库源:pod repo
    
    本地下载私有仓库索引:pod repo add REPO_NAME SOURCE_URL
    
    pod spec create 描述文字名称
    
    pod init 生成一个podfile文件
    
    在cocoapods注册  pod trunk register 18811108252@163.com 'huanghuacai' --verbose
    
    pod trunk push testLib.podspec
    
    验证podspec也可手动执行命令pod spec lint XPRACSignal.podspec
    
    更新pod到最新版本   sudo gem install cocoapods
    
    git tag '0.0.1'
    git push --tags
    git push origin master
    
    pod lib lint
    
    pod repo push HHSpecs HHO2View.podspec
    

    5.遇到的问题:

    1).当前工程依赖的工程是私有库,pod lib lint于是会报错:

     ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `XXX (~> 0.1.0)` depended upon by `ZZZ`) during validation.
    

    原因
    校验podspec文件时会到远程podspec库查找相关依赖,默认只会到官方specs库校验,此时需要指定远程specs库去校验。

    解决
    指定pod spec文件校验地址

    pod lib lint  --sources='私有索引库路径,https://github.com/CocoaPods/Specs.git'
    

    2).依赖一个库,pod lib lint时报错

     - NOTE  | xcodebuild:  /var/folders/fr/dlrxq7_j6t1fgl072c_dwssm0000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'ZOiOSTools'
    

    解决办法

    pod lib lint xxx.podspec --use-libraries
    

    注意:push的时候必须要也要加这个后缀,否则也会报该错误

     pod repo push Specs ZOiOSTools.podspec --use-libraries
    

    3).如果代码代码中有过期的API,那么pod lib lint时会报警告
    解决办法有两种,第一种去解决警告,第二种

    pod lib lint --allow-warnings
    
    pod repo push Specs ZOiOSTools.podspec --use-libraries --allow-warnings
    

    4).Returned an unsuccessful exit code. You can use --verbose for more information.

    pod lib lint --verbose
    

    5). fatal error: 'UIKit/UIKit.h' file not found 出现与这个类似的错误是因为在podspec文件中没有加

     s.platform     = :ios   
    

    相关文章

      网友评论

        本文标题:pod 私有库

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