iOS 发布CocoaPods私有库

  • 须要作的工做包括如下几点
  1. 建立一个本地的仓库,将本身的代码搞进去
  2. 将本身的代码上传到远程私有仓库中去
  3. 建立一个pods 的描述文件 .podspec
  4. 修改.podspec描述文件中的相关的描述信息
  5. 建立远程内部私有Spec Repo仓库
  6. 向私有的Spec Repo仓库中提交.podspec
  7. 在我的项目中的Podfile中增长刚刚制做的好的Pod并使用
  8. 后期的升级维护
  • 具体详细的步骤以下
    1. 建立远程仓库注意点
  • 正规的仓库都有一个license文件,Pods依赖库对这个文件要求比较严格,须要有这个文件,建议使用MIT类型的license
  • 代码版本要打tag(要在代码版本上传之后打tag)
  • pod 支持 .a静态库、.framework 以及文件,不必定要是可运行的工程里面的某个组件
  • 放代码的仓库不必定非要是Git仓库,只要是能够获取到相关代码文件就能够,能够是SVN的,也能够是zip包,区别就是在podspec中的source项填写的内容不一样
  1. 建立一个pods 的描述文件 .podspec
  • 若是你已经有先有工程可使用以下命令直接建立.podspec文件$ pod spec create MyViewExtension<这个名称通常和建立的项目名称同样就能够>
  • 或者使用以下命令建立完整项目工程目录$ pod lib create MyViewExtension <这个名称通常和建立的项目名称同样就能够>使用这个命令会询问以下问题,根据项目状况选择便可
  1. 修改.podspec描述文件中的相关的描述信息 详情可参考CocoaPods的官网的PodSpec语法
Pod::Spec.new do |s|
  # 项目的名称
  s.name             = "MyViewExtension"   
  # 项目的版本号,经过项目git的tag标签进行对应,这里的标签表明的版本 
  s.version          = "0.0.1"    
  # 项目简单的描述信息 
  s.summary          = "Just Testing."  
  # 项目的详细描述信息,注意,这里的文字的长度,必定要比上面的s.summary长,否则会认为格式不合格
  s.description  = <<-DESC
                      this project provide all kind of KeychainDeviceID for iOS developer 
                   DESC
  # 项目的网页主页信息,这里能够直接写本身的远程仓库的主页的地址
  s.homepage         = "https://github.com/RunOfTheSnail/MyViewExtension"
  # 开源协议
  s.license          = "MIT"   
  # 做者信息 
  s.author             = { "zhangyan" => "17***24@163.com" }                   
  # 这个比较重要,指的就是git的对应的远程仓库的地址以及版本号,版本号直接获取的是上面的s.version
  # 项目地址,这里不支持ssh的地址,验证不经过,只支持HTTP和HTTPS,最好使用HTTPS
  # Supported Keys:
  # :git => :tag, :branch, :commit, :submodules
  # :svn => :folder, :tag, :revision
  # :hg => :revision
  # :http => :flatten, :type, :sha256, :sha1
  s.source       = { :git => "https://github.com/RunOfTheSnail/MyViewExtension.git", :tag => s.version }                      
  # 支持的平台及版本
  s.platform     = :ios, "11.0"
  # 支持的ios最低版本
  s.ios.deployment_target = "7.0"
  # 若是是 Swift 的话指定 Swift 编译版本
  # s.swift_version = "4.0"
  # 必备项,代码源文件地址,若是有多个目录下则用逗号分开,不然"public_header_files"等不可用
  s.source_files  = "GSLXYKeychainDeviceID/KeychainDeviceID/**/*.{h,m}"                               
  # 公开头文件地址
  # s.public_header_files = "Pod/Classes/**/*.h"
  # 所需的系统framework,多个用逗号隔开,不须要后缀名
  # s.framework = "SomeFramework"
  s.frameworks = "UIKit", "AnotherFramework"
  # 须要弱连接的框架
  # s.weak_framework = "Twitter"
  # s.weak_frameworks = "Twitter", "SafariServices"
  #项目依赖的库文件(这个是系统的库文件),不须要后缀名,好比sqlite,libz等.以lib开头的须要省略掉lib这三个字母.例如:libz须要简写为z不然报错
  # s.library = "iconv"
  # s.libraries = "iconv", "xml2"
  # 第三方或本身建立的 .Framework的名称
  # s.vendored_frameworks = "YostarLib.framework"
  # 第三方或本身建立的 .a静态库的名称
  # s.vendored_libraries = "libYostarStaticLib.a"
  # 添加资源文件
  # s.resource = "XXX/XXXX/**/*.bundle"
  # s.resources = "XXX/XXXX/**/*.bundle"
  # CocoaPods会把这个库配置成static framework,同时支持Swift和Objective-C
  # s.static_framework = true
  # 依赖关系,该项目所依赖的其余,当在加载的时候也会一块把相关的依赖的库加载下来,若是有多个须要填写多个
  # s.dependency "JSONKit", "~> 1.4" 
  # 是否使用ARC,若是指定具体文件,则具体的文件使用ARC 
  s.requires_arc = true
  # 指定项目配置,如HEADER_SEARCH_PATHS、OTHER_LDFLAGS等
  # s.xcconfig = {"OTHER_LDFLAGS" => "-ObjC"}  
end
复制代码
  • 修改完毕以后进行检验一下.podspec的格式有木有问题
$ pod lib lint
完整lint格式
$ pod lib lint --allow-warnings --use-libraries --verbose --no-clean --sources='http://10.11.180.29/mobileDevelopers/YZT-Loan-Pod-Spec.git'
--verbose:打印错误
--allow-warnings:容许警告,默认有警告的podspec会验证失败
--fail-fast:遇到错误立刻中止,默认会完成全过程再中止
--use-libraries:若是本身私有库包含library,引用了.a、.framework,在验证和提交时须要加
--no-clean:检查问题
--sources:若是依赖了其余不包含在官方specs里的pod,则用它来指明源,好比依赖了某个私有库。多个值以逗号分隔
复制代码
  1. 建立远程内部私有Spec Repo仓库 建立远程内部私有Spec Repo仓库, 须要到Github或其余代码托管平台建立远程仓库, 以后将远程仓库克隆到本地,终端执行以下命令:
// 这里能够用https或ssh地址方式克隆
$ pod repo add WBSpecs https://github.com/G***00/TestPodspec.git
复制代码

注意:代码仓库和Spec Repo是须要分开存储的 克隆成功以后,咱们能够查看一下:$ open ~/.cocoapods/repos 本地cocoapods目录以下: html

  1. 向私有的Spec Repo仓库中提交.podspec
  • 首先将本地.podspec推送到远程私有repo spec仓库和本地repo spec仓库,终端执行以下命令:$ pod repo push WBSpecs WBAvoidCrash.podspec 参数解析:repo spec仓库名称 .podspec名称
  • 验证远程是否经过 推送成功以后,终端输入以下命令进行验证$ pod spec lint WBAvoidCrash.podspec
  • 验证私有仓库是否可用 用pod命令进行搜索,看可否搜索到:$ pod search WBAvoidCrash 若是搜索不到,在终端执行以下命令$ rm ~/Library/Caches/CocoaPods/search_index.json或者更新本地仓库$ pod repo update而后从新search
  1. 在我的项目中增长刚刚制做好的Podfile并使用 新建一个测试工程测试,用CocoaPods初始化项目,编辑Podfile文件:
#CocoaPods官方spec仓库
source 'https://github.com/CocoaPods/Specs.git'
#本身私有spec仓库
source 'https://github.com/wenmobo/WBSpecs.git'

platform :ios, '8.0'

target 'TestDemo' do
  #防Crash库
  pod 'WBAvoidCrash'
end
复制代码

编辑好podfile文件以后,终端执行:ios

$ pod install 安装时使用,更新库使用update命令
或
$ pod update 更新时使用
复制代码
  1. 后期的升级维护 8.1. 更新远程私有库中的代码 8.2. 修改.podspec中的配置,version升级一个版本 8.3. 给当前的远程仓库的代码,从新打个tag,tag和.podspec的version同样 8.4. 远程仓库的代码更新完毕,接下来执行上面的 6.将当前本地的spec文件传到私有Spec Repo仓库的索引库中 8.5. 检查测试一下,有没有上传到私有Spec Repo仓库的索引库中
  • 删除私有的Spec Repo$ pod repo remove [name] 其实直接找到之后,手动删除就行了,而后在将Git的变更push到远端仓库便可
  • 清理CocoaPods本地缓存 特殊状况下,因为网络或者别的缘由,经过CocoaPods下载的文件可能会有问题
  1. 手动删除(~/Library/Caches/CocoaPods/Pods/Release目录)git

  2. 打开终端,输入$ pod cache list,会列出全部本地已经缓存的第三方库,在终端中输入$ pod cache clean AAA会删除AAA缓存库,使用$ pod cache clean --all清除全部缓存github

附:个人博客地址sql

相关文章
相关标签/搜索