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
网友评论