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

2019-10-22 14:36:02 浏览数 (1)

0.准备工作

查看版本

代码语言:javascript复制
pod --version

1.上传项目源码

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

2.创建项目的podspec文件

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

代码语言:javascript复制
pod spec create ZJRefreshControl

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

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

代码语言:javascript复制
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 我们可以这样修改上面的配置

代码语言:javascript复制
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 执行命令

代码语言:javascript复制
pod lib lint --allow-warnings

如果出现

代码语言:javascript复制
-> ZJRefreshControl (1.1)

ZJRefreshControl passed validation.

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

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

代码语言:javascript复制
pod lib lint --verbose

3.打tag 上传podspec

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

代码语言:javascript复制
git tag -m"first release ZJRefreshControl" "1.1"
git push --tags

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

pod trunk 需要注册

查看个人注册信息

代码语言:javascript复制
pod trunk me

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

注册命令

代码语言:javascript复制
pod trunk register 183518918@qq.com 'psvmc'

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

上传

代码语言:javascript复制
pod trunk push *.podspec --allow-warnings

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

4.最后

如果一切顺利

代码语言:javascript复制
pod search ZJRefreshControl

就可以找到刚才的项目了

并且还有安装命令

代码语言:javascript复制
pod 'ZJRefreshControl','~>1.1'

5.Xcode 8 and iOS 10

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

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

详细介绍

使用

项目的根目录

代码语言:javascript复制
vim Podfile

写入如下内容

代码语言:javascript复制
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 项目的目录

运行以下命令:

代码语言:javascript复制
pod install

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

代码语言:javascript复制
pod install --verbose --no-repo-update

误区install or update

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

0 人点赞