基于GitLab 创建cocoapods库

脑子不好,需要记录

概念

1.code repository 代码仓库,主要存放我们提交的代码
2.spec repository 配置仓库,所有的配置按照包名、版本号存放在这个仓库。这个仓库只用来存放.podspec文件,不存放代码。

一、创建 pod 库

1、使用命令创建 pod 库

  • 我为了省事,直接在桌面目录下创建了一个名为 GSWebviewLib 的 pod 库。
    使用 pod 命令pod lib create libName创建 pod 库
    libName 为你想要的库的名字,也是后续能通过 pod search libName 搜索到的名字
创建pod库
  • 上面的命令可能会等待几分钟,耐心等待即可,直到出现下面的视图。
创建成功

2、配置 pod 库

  • 配置 pod 库的‘平台’、‘语言’、‘前缀’等等。右侧为答案的选项,需要什么直接在终端上敲对应的命令,然后回车即可,进入下一个配置。(如果什么都不写,直接回车的话,默认选择第一个)。
# 选择使用平台
What platform do you want to use?? [ iOS / macOS ]
 > iOS
# 选择编程语言
What language do you want to use?? [ Swift / ObjC ]
 > ObjC
# 在你的项目中是否创建一个demo工程
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?
 > GS
  • 所有的配置都配置完后,会自动打开我们当前的 pod 库。
配置完成

二、pod 项目结构

1、项目结构

系统会自动打开一个 Xcode 工程,具体的结构如下,XXX.podspec为我们的配置文件。

pod 目录结构

2、xxx.podspec配置

2.1、注意点:

  • s.name:名称,为我们对外提供的库名,也是我们通过pod search xxxx的名字。
  • s.version:版本(tag),需要和我们的 tag 保持一致。
  • s.summary:pod search 搜索的关键词
  • s.description:description 的文案要比summary 长,否则会有个验证不过的问题。
  • s.license:许可证
  • s.author:作者
  • s.social_media_url:社交网址
  • s.platform:平台
  • s.source:Git仓库地址,例如在Github地址后边加上 .git 就是Git仓库地址.即我们的项目路径url
  • s.source_files:需要包含的源文件 ,下文有详细说明
  • s.resources:需要包含的图片等资源文件
  • s.dependency:依赖库,如有多个可以这样写,需要用到的frameworks,不需要加.frameworks后缀
  • s.requires_arc:是否要求ARC
  • s.homepage:主页地址,例如GitHub 地址,主页的网站一定是能访问的。
Pod::Spec.new do |s|
    # pod search 搜索的关键字,不需要手动改变
  s.name             = 'GSWebviewLib'
  # 版本号,注意,需要和我们代码里的tag保持一致
  s.version          = '0.1.0'
  # 简介
  s.summary          = 'webview'

# 详细描述
  s.description      = <<-DESC
主要封装了 UIWebview 和 WKWebview 在Cordova中的使用,使用插件来和H5交互
                       DESC
# 项目主页地址,必须是可以访问的地址
  s.homepage         = 'http://www.baidu.com'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  # 许可证
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  # 作者
  s.author           = { 'Tony0822' => 'XXXXXX(会自动生成)' }
  # 项目地址
  s.source           = { :git => 'http://[email protected]/xxxxx/GSWebviewLib.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/'

  s.ios.deployment_target = '8.0'

  # 源码文件的配置路径,所有的代码都在这个目录下
  s.source_files = 'GSWebviewLib/Classes/**/*'
  
  # 资源文件的配置路径
  # s.resource_bundles = {
  #   'GSWebviewLib' => ['GSWebviewLib/Assets/*.png']
  # }

  # 源码头文件的配置路径
  # s.public_header_files = 'Pod/Classes/**/*.h'
  
  # 系统框架的依赖库
  # s.frameworks = 'UIKit', 'MapKit'
  # 第三方框架的依赖库
  # s.dependency 'AFNetworking', '~> 2.3'
  • s.source_files 常见写法
    • * 表示匹配所有文件
    • *.{h,m} 表示匹配所有以 .h/.m结尾的文件
    • ** 表示匹配所有 子目录

2.2、上面的 podspec 文件修改后,需要进行验证,否则提交不上去

  • 验证 podspec 文件,编辑完 podspec 文件需要验证一下这个文件是否可用 podspec 文件不允许有任何的 warning 或者 error
    pod lib lint :
    --allow-warnings 允许有任何的Warning
    --verbose 获取更多错误信息
    --use-libraries 包含.a 需要添加此参数:

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

    git tag -m"update lib podspec" "1.0.0"
    git push --tags

进入到Example文件夹中验证刚才我们填写的是否有错误
使用pod lib lint NAME命令可以验证.podspec文件是否符合规范。
也可以使用 pod lib lint 校验

校验

2.3 添加文件

  • 在上面podspec 文件中,可以看出,所以的代码都在Classes 文件目录下的。如下,添加GSLog类,来测试是否添加成功。
添加对应的文件
  • 更新 pod
更新pod

三、创建 podspec

  • 使用命令pod repo add GSWebviewLibSpecs http://[email protected]/xxxx/GSWebviewLibSpecs.git
    成功后,可以在我们本地的 cocoapods 目录下,会生成一个 GSWebviewLibSpecs 文件夹
  • 使用命令 pod repo push GSWebviewLibSpecs GSWebviewLib.podspec 会把我们的pod 放到 podspec 中
gao:GSWebviewLib yang$ pod repo add GSWebviewLibSpecs http://[email protected]/xxxx/GSWebviewLibSpecs.git
Cloning spec repo `GSWebviewLibSpecs` from `http://[email protected]/xxxx/GSWebviewLibSpecs.git`
gao:GSWebviewLib yang$ pod repo push GSWebviewLibSpecs GSWebviewLib.podspec 
  • 如果报出下面的错误信息
    Your configuration specifies to merge with the ref 'refs/heads/master'
    from the remote, but no such ref was fetched.
    我们只需要在 GSWebviewLibSpecs中添加一个文件,是 仓库不是空仓库即可。
报错.png
  • 再次运行,显示正常
成功
  • 在 cocoapods 文件中可以查看到如下目录结构
目录结构

使用

创建一个测试工程 ,

# platform :ios, '9.0'

source ‘http://[email protected]/xxxx/GSWebviewLibSpecs.git’        #私有仓库地址

target 'GSPodDemo' do

pod 'GSWebviewLib'

end

添加子文件

如果想在pod后的文件成目录结构,可以定义subspec

s.subspec 'mySecondObject' do |ss|
    ss.source_files = 'myBase/mySecondObject/**/*.{h,m}'
  end
  
  s.subspec 'handyFrame' do |hf|
    hf.source_files = 'myBase/handyFrame/**/*.{h,m}'
  end

你可能感兴趣的:(基于GitLab 创建cocoapods库)