iOS管理第三方库大多使用CocoaPods,如果需要实现组件化或者发布自己的开源库/私有库到CocoaPods,则需要手动配置。
1,创建开源仓库/私有仓库
这里以GitHub为例,创建一个新的仓库,制作Pod这里必须选择license版本,一般选择MIT,可选择增加README与gitignore文件。
将库代码复制到对应目录下,提交代码之前需要打上tag,
git tag 0.1.0 // podspec文件是通过tag指定库的版本的
git push origin --tags // 提交所有tag
2,创建上传Podspec文件
pod spec create PSCheckVersion
2.1,配置Podspec文件
Pod::Spec.new do |s|
s.name = "PSCheckVersion"
s.version = "0.1.0"
s.summary = "一键检测App更新,并附带UI可直接使用"
s.homepage = "https://github.com/paintingStyle/PSCheckVersion"
s.license = "MIT"
s.author = { "paintingStyle" => "sfdeveloper@163.com" }
s.platform = :ios,'7.0'
s.source = { :git => "https://github.com/paintingStyle/PSCheckVersion.git", :tag => "#{s.version}" }
s.source_files = "PSCheckVersion/**/*.{h,m}"
s.framework = "UIKit"
s.dependency "Masonry", "~> 1.1.0"
s.requires_arc = true
end
依赖多个系统库:
s.frameworks = "UIKit", "AnotherFramework"
依赖多个第三方库
s.dependency "Masonry", "~> 1.1.0"
s.dependency "AFNetworking", "~> 3.1.0"
这里的s.source_files的路径就是库代码的路径,他是从Podspec同级目录路径开始找寻的,这个目录文件都将被编译。这里为Podspec同级目录的PSCheckVersion文件夹下的所有.h,.m文件。
如果库中用到了图片/xib等,需要指定到s.resourcs下,这个目录文件不参与编译。
2.2,验证Podspec文件是否可用
pod spec lint PSCheckVersion.podspec
验证成功如上图所示,注意有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,遇到报错一般是Podspec文件配置有误,根据提示更改即可。
2.3,测试Pod
pod 'PSCheckVersion', :podspec => '/Users/rzj/.cocoapods/repos/master/Specs/PSCheckVersion/0.1.0/PSCheckVersion.podspec' #指定podspec文件
通过指定podspec文件路径,检测该pod是否可用
2.4,注册Trunk
pod trunk register sfdeveloper@163.com 'paintingStyle' --description='paintingStyle MacPro'
他会发送邮件到你的邮箱,点击链接激活。
执行下面命令,获取trunk信息
pod trunk me
2.5,上传Podspec文件
pod trunk push 命令会首先验证你本地的podspec文件(是否有错误),之后会上传spec文件到trunk,最后会将你上传的podspec文件转换为需要的JSON文件
pod trunk push PSCheckVersion.podspec --allow-warnings --verbose
2.6,更新pod库
如果pod trunk push成功后无法pod search到自己的库,可执行该命令。
pod setup
此时搜索,可能出现 Unable to find a pod with name, author, summary, or description matching,需要删除search_index.json文件,重新执行pod search会生成search_index.json文件。
rm ~/Library/Caches/CocoaPods/search_index.json
3,总结
- 创建开源仓库/私有仓库
- 代码打上tag,上传到代码仓库
- 配置Podspec文件
- 验证Podspec文件是否可用,注册Trunk并且上传
- 更新pod库
库更新版本,代码打上tag,修改podspec文件,执行执行pod trunk push上传即可。
4,指定pod仓库地址/仓库源
pod 'MWPhotoBrowser',:git =>'https://github.com/paintingStyle/MWPhotoBrowser.git'
pod 'SPTabBarController',source:'http://code.workinggo.com/guoqiang/SXSpecs.git'
5,错误情况
podspec可能存在异常,比如中文符号或者多余描述
Unable to interpret the specified path `PSCheckVersion.podspec` as a podspec