在网上众多技术文章基本千篇一律。多是简单copy,每次打开不同标题,结果内容大同小异,让人很无奈。
无效搜索和情感磨灭,有时候真让人发狂。
本文简单介绍私有化的创建步骤及相关原理。知其然知其所以然。
pod主要涉及到两个概念:版本库和代码库
版本库创建
- 在git创建远程版本库项目
- 将远程版本库添加到本地
$ pod repo add 本地仓库名称 git仓库地址
完成后,可在~/.cocoapods/repos目录查看
代码库pod
在网上多为命令行(如下所示)创建工程,生成包含Example项目。其实完全没有必要,主要原因是工程结构复杂,不易理解和整理。
$ pod lib create 工程名
如果要使工程作为pod库存在,只需要git根目录添加podspec和LICENSE两个文件即可。
根本原因是pod加载库是根据podspec索引文件定位查找。所以podspec文件的位置和形式不是必需品。
- 在git代码仓库根目录命令行创建或者拷贝其他项目podspec、LICENSE
$ pod spec create MyAdditions
模版:
Pod::Spec.new do |s|
s.name = "项目名称"
s.version = "版本号 与 你仓库的 标签号 对应"
s.license = "MIT" # 开源证书
s.summary = "私人pod代码" # 项目简介
s.homepage = "仓库的主页"
s.source = { :git => "你的仓库地址,不能用SSH地址", :tag => "#{s.version}" }
s.source_files = "代码的位置/*.{h,m}" #表示文件夹下所有的.h和.m文件
s.requires_arc = true # 是否启用ARC
s.platform = :ios, "7.0" #平台及支持的最低版本
# 实例
s.subspec 'Library' do |ss|
ss.source_files = 'AppFrame/Library/*.h'
ss.public_header_files = 'AppFrame/Library/*.h'
ss.subspec 'Network' do |sss|
sss.subspec 'Http' do |ssss|
ssss.dependency 'AFNetworking', '~> 3.2.1'
ssss.source_files = 'AppFrame/Library/Network/Http/*.{h,m}'
ssss.public_header_files = 'AppFrame/Library/Network/Http/*.h'
end
end
ss.subspec 'Storage' do |sss|
sss.subspec 'Keychain' do |ssss|
ssss.source_files = 'AppFrame/Library/Storage/Keychain/*.{h,m}'
ssss.public_header_files = 'AppFrame/Library/Storage/Keychain/*.h'
end
end
end
end
- 验证podspec文件正确性,因为用到AFNetworking,所以要加入官方地址
$ pod lib lint --verbose --allow-warnings --sources='https://github.com/CocoaPods/Specs'
- 提交文件,打tag(必须和podspec版本号一致)
更新版本库版本
- 将podspec提交到远程版本库
$ pod repo push podRepo AppFrame.podspec --allow-warnings --sources='https://github.com/CocoaPods/Specs'
到此,私有库创建完毕,使用最新版本:
$ pod update
网友评论