iOS-使用CocoaPods在私人Pod Specs发布pod
环境准备
- 安装Xcode
- 安装cocoapods
公共Specs
使用cocoapods,如果不指定仓库来源的话,默认为公共Specs:https://github.com/CocoaPods/Specs.git
如果 pod install 太慢可以指定来源为cocoapods在gitee的镜像:https://gitee.com/mirrors/CocoaPods-Specs.git
在Podfile上面添加指定来源:
source 'https://gitee.com/mirrors/CocoaPods-Specs.git'
创建个人specs远程仓库
在gitee上创建一个带有Readme 文件
的仓库,命名为CSPublicSpecs
(名称自己决定)
PS:这里不能创建空仓库,否则会导致无法推送podspec
添加创建好的specs到本地:
pod repo add CSPublicSpecs https://gitee.com/hcsaaron/cspublic-specs.git
添加成功后,可以在本地~/.cocoapods/repos
下看到CSPublicSpecs
新建本地仓库
用 默认模板 创建
pod lib create CSPublicSDK
指定模板创建
pod lib create CSPublicSDK --template-url=https://gitee.com/Pods-Lib/pod-template.git
等待下载模板完成后,按步骤选择类型
基于已有的本地仓库
- cd到xxx.xcodeproj工程目录下
- 执行
pod spec create xxx
生成xxx.podspec
文件,修改相关配置 - 执行
pod init
生成Podfile
文件,添加依赖 - 执行
pod install
生成. xcworkspace
编辑.podspec
根据自己项目情况修改.podspec
文件,关于Podspec的学习,请看 CocoaPods - Podspec Syntax Reference
Pod::Spec.new do |s|
s.name = 'CSPublicSDK'
s.version = '0.1.0'
s.summary = 'A short description of CSPublicSDK.'
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = 'https://gitee.com/hcsaaron/cspublic-sdk'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'hcsaaron@163.com' => 'hcsaaron@163.com' }
s.source = { :git => 'https://gitee.com/hcsaaron/cspublic-sdk.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '9.0'
s.source_files = 'CSPublicSDK/Classes/**/*'
# s.resource_bundles = {
# 'CSPublicSDK' => ['CSPublicSDK/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
end
创建远程仓库
在gitee上创建一个名为CSPublicSDK
的仓库(名称自己决定)
创建完成后复制git地址为:https://gitee.com/hcsaaron/cspublic-sdk.git
将本地仓库关联远程仓库:
git remote add origin https://gitee.com/hcsaaron/cspublic-sdk.git
将所有文件暂存:
git add .
提交:
git commit -m "初次提交"
推送到远程仓库:
git push -u origin master
推送成功:
Enumerating objects: 79, done.
Counting objects: 100% (79/79), done.
Delta compression using up to 16 threads
Compressing objects: 100% (70/70), done.
Writing objects: 100% (79/79), 27.92 KiB | 5.58 MiB/s, done.
Total 79 (delta 17), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/hcsaaron/cspublic-sdk.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
打开https://gitee.com/hcsaaron/cspublic-sdk可以看到远程仓库已经更新了
验证.podspec文件
cd到xxx.podspec
文件所在目录下:
pod lib lint
验证失败,报错:
[!] CSPublicSDK did not pass validation, due to 2 warnings (but you can use `--allow-warnings` to ignore them).
You can use the `--no-clean` option to inspect any issue.
则按提示添加--allow-warnings
参数:
pod lib lint --allow-warnings
看到以下提示,则说明验证成功:
CSPublicSDK passed validation.
如果
pod lib lint
验证失败,可以视情况附加以下参数:
--verbose
:查看详细信息
--allow-warnings
:允许警告,用到第三方框架时,用这个参数可以屏蔽警告
--use-libraries
:如果用到的第三方库需要使用库文件的话,会用到这个参数
--sources
:如果一个库的podspec包含除了cocoapods仓库以外的其他库的引用,则需要改参数指明,用逗号分隔。例如:pod lib lint --sources='https://gitee.com/hcsaaron/cspublic-sdk.git'
还有另外两个参数可以使用:
--fail-fast
:在出现第一个错误时就停止
--subspec=Name
:用来校验某个子模块的情况
发布podspec
打tag并push到远程(tag版本号要和podspec中的s.version
一致):
git tag '0.1.0'
git push --tags
将CSPublicSDK.podspec
提交到CSPublicSpec
中:
pod repo push CSPublicSpecs CSPublicSDK.podspec
如果报错,则添加--allow-warnings
参数:
pod repo push CSPublicSpecs CSPublicSDK.podspec --allow-warnings
推送成功后,可以看到CSPublicSpecs
已经有对应的.podspec
了
搜索一下自己刚刚发布的pod库:
pod search CSPublicSDK
已经可以搜出来了
集成SDK
新建demo工程:
cd进demo工程目录,执行pod init
生成Podfile
:
pod init
编辑Podfile
添加pod 'CSPublicSDK', '~> 0.1.0'
,还需指定来源source 'https://gitee.com/hcsaaron/cspublic-specs.git'
:
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
source 'https://gitee.com/hcsaaron/cspublic-specs.git'
target 'CSDemo' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for CSDemo
pod 'CSPublicSDK', '~> 0.1.0'
end
然后执行pod install
生成.xcworkspace
pod install
已经可以愉快地使用了