iOS开发 创建podspec文件,为自己的项目添加pod支持

0.准备工作

查看版本

1
pod --version

1.上传项目源码

把项目源码上传到gitHub仓库再clone到本地(以ZJRefreshControl为例), 如果项目本来就在gitHub的仓库中, 直接clone到本地即可

2.创建项目的podspec文件

用终端命令cd到本地项目目录并执行如下命令:

1
pod spec create ZJRefreshControl

这时候本地就生成一个ZJRefreshControl.podspec文件

用编辑器打开.podspec文件 (我自己用Sublime Text)
删除不必要的注释
这里只简单介绍基本用法,所以只用到一部分必须得字段 更多字段请移步http://guides.cocoapods.org/syntax/podspec.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Pod::Spec.new do |s|
s.name = "ZJRefreshControl"
s.version = "1.1"
s.summary = "ZJRefreshControl"
s.swift_version='5.0'
s.description = <<-EOS
ZJRefreshControl
EOS
s.homepage = "https://github.com/psvmc/ZJRefreshControl"
s.license = { :type => "MIT", :file => "License" }
s.author = { "psvmc" => "183518918@qq.com" }
s.ios.deployment_target = '8.0'
s.source = { :git => "https://github.com/psvmc/ZJRefreshControl.git", :tag => s.version }
s.default_subspec = "Core"

s.subspec "Core" do |ss|
ss.source_files = "ZJRefreshControl/Lib/ZJRefreshControl/*.swift"
ss.framework = "Foundation"
end
end

假如依赖第三方库RxSwift 我们可以这样修改上面的配置

1
2
3
4
5
s.subspec "Core" do |ss|
ss.source_files = "ZJRefreshControl/Lib/ZJRefreshControl/*.swift"
ss.framework = "Foundation"
ss.dependency "RxSwift", "~> 4.0"
end

验证podspec文件
编辑完podspec文件后需要验证一下这个文件是否可用
podspec文件不允许有任何的警告或Error
执行命令

1
pod lib lint --allow-warnings

如果出现

1
2
3
-> ZJRefreshControl (1.1)

ZJRefreshControl passed validation.

则说明验证通过, 否则, 根据提示修改podspec文件再次验证直到验证通过

如果出现Error但是提示信息不足,可以添加--verbose 以获取更多错误信息

1
pod lib lint --verbose

3.打tag 上传podspec

podspec文件中需要指定的tag, 完成上述操作后给项目打tag

1
2
git tag -m"first release ZJRefreshControl" "1.1"
git push --tags

最后使用pod trunk命令,把podspec文件推送到CocoaPod官方库

pod trunk 需要注册

查看个人注册信息

1
pod trunk me

如果没有个人信息 就要注册

注册命令

1
pod trunk register 183518918@qq.com 'psvmc'

邮箱里验证邮件 点击验证连接后 就可以上传了

上传

1
pod trunk push *.podspec --allow-warnings

这个过程可能会比较耗时,原因你懂的

4.最后

如果一切顺利

1
pod search ZJRefreshControl

就可以找到刚才的项目了

并且还有安装命令

1
pod 'ZJRefreshControl','~>1.1'

5.Xcode 8 and iOS 10

如果要提交的组件为swift5.0的 就必须满足以下条件

  • CocoaPods 升级为 1.1.0 及以上
  • 配置文件中添加s.swift_version='5.0'

详细介绍

使用

项目的根目录

1
vim Podfile

写入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
platform :ios, "8.0"

target 'qgyx' do
pod 'ZJNotice', '~> 1.4'
end

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end

qgyx 项目的目录

运行以下命令:

1
pod install

不更新升级CocoaPods的spec仓库 来缩短pod install的时间

1
pod install --verbose --no-repo-update

误区install or update

当我们添加新的库的时候,我们要下载库,用的命令是pod install,而不是pod update,因为在第一次pod install后,我们的项目中会生成一个Podfile.lock的文件,他的作用是记录我们新添加库的版本信息,这样的话,如果用pod update,就会下载新版本的库,导致所有代码都要进行更改,这时Podfile.lock也会重新生成
总之 添加库时一定要用pod install命令