美文网首页
CocoaPods私有库搭建说明

CocoaPods私有库搭建说明

作者: HannibalRoyal | 来源:发表于2019-08-28 14:31 被阅读0次

    CocoaPods私有库搭建说明

    关于CocoaPods

    CocoaPods是Swift和Objective-C Cocoa项目的依赖管理器.他拥有超过65000个库,并超过300万个应用程序中使用.CocoaPods可以帮助您优雅的扩展项目.

    官网:官网链接

    CocoaPods的安装

    这里就不详细说明CocoaPods的安装了,详细步骤请移步:
    CocoaPods官方安装指南

    私有库说明

    CocoaPods的工作原理是,在第三方代码托管平台创建一个CocoaPods的索引库,例如:Github
    然后将此索引库Checkout到本地,当我们执行Pod Search XXX的时候,其实是搜索的本地的索引库.这也就是为什么,如果长期不更新Pod索引,某些第三方会搜索不到的原因.
    通过索引里面的信息,去下载对应的库安装,并处理好项目依赖等信息.

    所以,根据上述描述,我们是否可以创建一个自己的索引库,然后做自己的库管理呢?答案是肯定的.CocoaPods支持私有Pods的搭建.

    搭建私有库

    根据上述说明,不难分析出,搭建一个私有库其实有几个重点.

    1. 创建自己的CocoaPods的索引库.
    2. 增加自己的CocoaPods索引库到自己的CocoaPods里.

    做完上面两点,其实私有库的搭建方面已经做完了.下面我们来说说搭建CocoaPods私有库的详细步骤.

    1. Github,Gitlab,码云,Coding等第三方代码托管平台上创建自己的私有索引库,此处也可以是自己公司的本地私有Git仓库.
    2. 使用CocoaPods的命令行,在本地增加第一部的私有索引库.其实这一步也是将自己创建的私有索引库Clone到本地的操作.且支持HTTPSSSH方式,此处可根据自己的需求或者喜欢来选择合适自己的方式.

    创建索引库就是在Git仓库里面创建一个空的仓库,此处就不详细说明了.值得注意的是,建立了仓库之后,一定要在库里面把LICENSE文件和README文件创建好,请记住LICENSE文件的,此处有两个目的:

    1. 避免上传.podspec文件到私有索引库的时候报错.
    2. 避免后续的LICENSE文件配置出错.

    下面说一下增加索引库到本地.使用命令pod repo add REPO_NAME SOURCE_URL,其中REPO_NAME是私有索引库在本地的名字,SOURCE_URL是私有索引库的地址.
    Example:

    pod repo add KKPrivateCocoaPodsSepc https://github.com/xxx/xxx.git
    

    执行完上述命令之后,需切换到本地索引库目录,做进一步验证是否成功:

    cd ~/.cocoapods/repos/REPO_NAME
    pod repo lint .
    

    Example:

    cd ~/.cocoapods/repos/KKPrivateCocoaPodsSepc
    pod repo lint .
    

    执行验证后,提示下面即添加成功:

    Linting spec repo `KKPrivateCocoaPodsSepc`
    Analyzed 0 podspecs files.
    All the specs passed validation.
    

    至此,私有的CocoaPods的库以及搭建完毕.下面就是如何将自己封装的库/SDK添加到自己的私有Pods中.

    制作库并使用CocoaPods私有库管理

    1. 首先在第三方代码托管平台创建自己的代码仓库.用于托管自己封装的库.
    2. 封装代码,确定编译运行无错,功能实现完成.
    3. 将封装的代码上传到第1步建立的代码仓库中.
    4. 打开终端.cd到项目文件夹,并创建索引配置文件.podspec.
    pod spec create SPEC_NAME
    

    出现下面提示,代表创建成功:

    Specification created at KKWebViewController.podspec
    
    1. 编辑.podspec文件
      1. podspec的配置项很多,可根据需求配置,官方语法地址:官网地址.
        一般项目建议使用下面配置:
    Pod::Spec.new do |s|
      s.name             = 'SPEC_Name' #项目名称
      s.version          = '1.1.1' #项目的版本号,一定要与仓库的Tag一致,仓库打的Tag即CocoaPods库的版本.
      s.summary          = 'XXXX' #项目简介
      s.homepage         = 'https://github.com/xxx'# 仓库的主页,有实际的填实际的,没有的话,填Github主页也行.
      s.license          = { :type => "MIT", :file => "LICENSE" }#指定MIT证书.
      s.author           = { "Orta" => "orta.therox@gmail.com" }#作者信息
      s.source           = { :git => "https://github.com/xxx.git", :tag => s.version }#你的仓库地址,不能用SSH地址
      s.social_media_url = 'https://twitter.com/artsy'# 个人主页,有实际的填实际的,没有的话,填Github主页也行.
    
      s.platform     = :ios, '7.0'#平台及支持的最低版本
      s.requires_arc = true #ARC
    
      s.source_files = 'Classes'# 你代码的位置,从项目根目录开始, Classes/*.{h,m} 表示 Classes 文件夹下所有的.h和.m文件
      s.resources = 'Pod/Assets/*'#一般不需要更改.
    
      s.frameworks = 'UIKit', 'Foundation'#支持的框架,多个使用,分割
      s.module_name = 'Artsy_UIFonts'
      s.dependency 'AFNetworking', '~> 1.0' # 依赖库
    end
    
    1. 编辑完成后,我们要验证我们配置的是否正确.使用如下命令,验证的命令有两种,第一种是本地验证:
    pod lib lint
    

    第二种是本地/远程一起验证:

    pod spec lint
    

    一般我们使用pod sepc lint去验证,因为单本地验证通过后,后面执行pod repo push xxx xxx的时候,可能还是会报错.

    1. 验证通过示例如下:
    RoyaldeMac-mini:WebViewController royal$ pod lib lint
    
     -> KKWebViewController (0.0.1)
        - NOTE  | xcodebuild:  note: Using new build system
        - NOTE  | [iOS] xcodebuild:  note: Planning build
        - NOTE  | [iOS] xcodebuild:  note: Constructing build description
    
    KKWebViewController passed validation.
    

    验证通过是个解决问题的过程,配置书写的有问题,期间会出各种各样的问题,请耐心Google解决.不要有任何警告或者错误,不光是有错误或者警告,会导致上传失败,而且本人是极度强迫症患者.

    1. 将验证修改后的.podspec一并上传到代码仓库中.并修改Tag.
      9.推送.podspec到私有pod索引库
    cd PROJECT_PATH
    pod repo push REPO_NAME PROJECT_NAME.podspec
    

    10.push成功后,使用pod repo update更新仓库,然后执行命令pod search REPO_NAME,此时CocoaPods会重新更新搜索index,等待更新完毕后,就可以成功搜索到自己的私有库了.

    私有库的使用

    私有库的使用跟常规的cocoapods使用并没有太大区别.在项目的profile文件中,加入我们的私有索引,然后加入需要pod的库,执行pod install或者pod update即可.如果是部分库使用私有库,部分库使用公有库,则需要把公有库的索引地址也加上,如下:

    # Uncomment the next line to define a global platform for your project
    source 'https://github.com/CocoaPods/Specs.git'#公有索引库地址
    source 'https://gitlab.com/xxx/SPEC_NAME.git'#私有索引库地址
    
    platform :ios, '9.0'
    
    target 'TestProject' do
      # Comment the next line if you don't want to use dynamic frameworks
      use_frameworks!
    
      # Pods for TestProject
    
      pod 'PUBLIC_POD_NAME'
      pod 'PRIVATE_POD_NAME', '~> 0.0.2'
    
    end
    

    遇到的问题

    以上配置可能会遇到很多,下面只是我做演示项目中遇到的问题及解决方案,如果遇到其它未列出问题,请面向Google开发.

    1. - ERROR | [iOS] file patterns: The source_files pattern did not match any file.
      这个问题是由于source_files路径设置不对,需要一层一层的文件夹递进到目标文件夹:
      例如:我的工程文件是结构是:

      image.png

      source_files应该设置成:
      s.source_files = 'WebViewController/Classes'

    1. - WARN | [iOS] license: Unable to find a license file
      出现这个问题,主要是LICENSE文件的设置问题.主要是体现在几个方面:
      1. 文件名错误.
      2. 文件的位置错误.文件应该放在跟.podspec一个目录.
    2. - ERROR | [iOS] unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devices
      出现这个问题,修改xcode的偏好设置有问题:修改Xcode-Preferences-Location-Command Line Tools,选择当前xcode版本的命令行工具.

    相关文章

      网友评论

          本文标题:CocoaPods私有库搭建说明

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