pod 私有库

如何创建私有 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   

推荐阅读更多精彩内容