iOS 制作 pod 私有库详细教程
1. 创建 pod 库
需要创建两个远程仓库
, 一个做用来做私有库, 一个做工程库
- 1.创建私有库
https://gitee.com/XXSpec.git
- 2.创建工程库
方案一
- 创建
pod
库
pod spec create PodName
复制代码
- 编辑
spec
文件并执行
pod spec lint PodName.podspec
复制代码
方案二
- 直接使用
cocoapods
创建
pod lib create PodName
复制代码
- 或者指定
clone url
地址
pod lib create PodName --template-url='指定clone url'
复制代码
- 然后依次输入,执行即可
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> YES
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> ZX
复制代码
2. 添加代码和图片
- 在
~/PodName/PodName/Classes
文件夹下添加所需要发布的代码 - 在
~/PodName/PodName/Assets
文件夹下添加所需要图片
3. 编辑 podspec 信息
podspec
文件详细的描述了一个pod
库的版本各种信息.
Pod::Spec.new do |s|
# pod 库名称
s.name = 'PodName'
# pod库 版本
s.version = '0.1.0'
# pod 简述 pod search 的时候显示
s.summary = 'A short description of PodName.'
# 详细介绍
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
# 项目主页 要填写可以访问到的地址,不然验证不通过
s.homepage = 'https://github.com/zhaixingxing/PodName'
# 开源协议 必须要有
s.license = { :type => 'MIT', :file => 'LICENSE' }
# 作者信息
# Pod 屏幕截图,支持单个或者数组,主要适用于UI类的pod库。cocoapods推荐使用gif
# s.screenshot = '图片URL'
# s.screenshots = [ '图片URL','图片URL' ]
s.author = { 'zhaixingxing' => '[email protected]' }
# 项目地址 不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
s.source = { :git => 'https://github.com/zhaixingxing/PodName.git', :tag => s.version.to_s }
# 多媒体介绍地址
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 说明文档地址
# s.documentation_url = 'http://www.example.com/docs.html’
# 支持的版本
s.ios.deployment_target = '9.0'
# 支持的swift版本
# s.swift_version = ‘5.0'
# 是否使用静态库。如果podfile指明了use_frameworks!命令,但是pod仓库需要使用静态库则需要设置
# s.static_framework = true
#是否使用ARC,如果指定具体文件,则具体的文件使用ARC
# s.requires_arc = true
# 资源文件
s.source_files = 'PodName/Classes/**/*'
# s.source_files = 'Classes/**/*.{h,m}', 'More_Classes/**/*.{h,m}'
# 资源库文件
# s.resource_bundles = {
# 'PodName' => ['PodName/Assets/*']
# }
# 依赖的系统库 多个用逗号隔开
# s.frameworks = 'UIKit', 'MapKit'
# 依赖的第三方framework 后面是路径
# s.vendored_frameworks = ['Module/*.framework']
# 依赖的第三方 .a 后面是路径
# s.vendored_library = 'Module/Classes/SDK/*.a'
# 依赖的 .a 多个用逗号隔开
s.libraries = ['xml2.2','sqlite3.0']
# 依赖的第三方库
# s.dependency 'AFNetworking', '~> 2.3'
# s.dependency 'SDWebImage'
# 公开的头文件
# s.public_header_files = 'Pod/Classes/**/*.h'
# 指定不公开的头文件
# s.private_header_files = 'Pod/Classes/**/*.h'
# 自定义前缀文件 默认为系统 头文件
# s.prefix_header_file = false
# s.prefix_header_file = 'iphone/include/prefix.pch'
# 向系统 pch 文件中添加头文件 多个用逗号隔开
# s.prefix_header_contents = '#import <UIKit/UIKit.h>' , '#import "Test.h"'
end
#子模块
s.subspec 'TestSub' do |ss|
# 子模块文件, 文件信息如上
ss.source_files = 'podName/Classes/TestSub/**/*'
end
复制代码
- 文件目录结构
4. 注册 Cocoapods 账号
- 查看是否创建过账号
pod trunk me
# [!] You need to register a session first.
复制代码
- 注册账号
pod trunk register 邮箱地址 ‘用户名’ --description='描述信息'
复制代码
-
注册完之后去邮箱打开邮件, 激活验证注册
-
验证一下
pod trunk me
# 输出
- Name: 用户名
- Email: 邮箱 XX
- Since: 日期
- Pods: XXXX
- Sessions: XXXX
复制代码
5 验证 pod 是否通过
- 本地验证
pod lib lint podName
# pod lib lint --verbose 显示详细的检测过程
# pod lib lint --allow-warnings 允许警告
复制代码
- 本地和远程验证
pod spec lint podName
#pod spec lint podName \
--verbose --use-libraries --allow-warnings -- \
sources='https://私库.git,https://github.com/CocoaPods/Specs.git'
复制代码
6. 提交 pod
- 提交
pod repo push 私有库 podName.podspec --verbose --use-libraries --allow-warnings
复制代码
- 提交成功之后验证
pod
# 执行
pod setup
# 出现 Setup completed 说明执行成功
# 如果失败执行
pod search podName
#如果还是失败 ,执行删除pod的缓存
rm ~/Library/Caches/CocoaPods/search_index.json
复制代码
7. 更新 pod
- 修改版本号
s.version = '0.1.1'
- 上传代码到远程仓库
- 打
tag
等于0.1.1
- 验证
pod
并提交
附录 podspec 参数
--allow-warnings
: 忽略警告--verbose
: 显示更多调试信息--silent
: 显示所有信息--use-libraries
: 使用静态库安装--use-modular-headers
:OC
与Swift
混编必须添加--skip-import-validation
:跳过验证pod是否可以导入--skip-tests
: 在验证期间跳过构建和运行测试--use-json
: 在将其推送到repo
之前,将podspec
转换为JSON
--swift-version=VERSION
: 在标记规范时应该使用的SWIFT_VERSION
.这优先于规范中指定的Swift
版本或. Swift
版本文--help
: 显示指定命令的帮助横幅