私有库pod搭建与应用

2024-06-05  本文已影响0人  何颀

首先来说说什么是私有库

顾名思义,就是你的私人代码仓库,而不是开源出去让大家都能看到并参与开发的项目。私有仓库可以进行权限控制,只有拥有权限的人才能访问并修改它,也就是我们所说的合作者。
私有库不在cocoaPods的官方Repo仓库中,而是在自建的spec repo中,库索引是以 *.podspec文件形式存在,自建的spec repo放在路径~/.cocoapods/repos下,与master同级,其链接的远程仓库可以是公开的,也可以是私有的。

创建pod库

创建私有库有两种方案,第一种方案手动创建 podspec与自己私有仓库进行关联,第二种直接使用cocoapods创建

方案一

首先选择在xcode里新建framework项目,并且在公司仓库gitLab新建两个远程仓库(索引库、代码库)用git将本地framework项目推入远端
在用终端本地执行

#用于创建一个新的 Pod(即一个 iOS 或 macOS 的库或框架)的规范文件(`.podspec` 文件)
pod spec create PodName

在.podspec里面进行编辑,稍后会详细讲解 podspec文件内容
最后在终端执行查看当前pod文件是否规范

#用于检查一个 Pod 的规范文件(`.podspec` 文件)是否符合规范和要求
pod spec lint PodName.podspec

如果编译成功,符合规范要求就可以提交pod

pod repo push 索引库 podName.podspec--verbose--use-libraries--allow-warning

方案二

1.直接使用cocoapods创建

pod lib create PodName

2.然后依次输入,执行即可

What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you liketo 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?
> xx

3.添加库文件。
成功后会创建出一个pod_test工程,目录结构如下

image.png

将编写好的一些文件拉入pod_test/classes中。

image.png

Example是创建Pods工程时生成的一个工程,用于验证添加的库文件是否能正常使用。Example目录下Podfile文件中自动设置了pod_test依赖,如下:

target 'pod_test_Example' do
  pod 'pod_test', :path => '../'    #自动添加了

cd Example文件夹下,终端执行pod install或pod update,安装pod_test依赖就可以查看在项目中应用了

提交pods库到github上。打标签,推送到远程。

重点:tag打的版本号必须和podspec中的s.version值相同

git tag
git tag '0.1.0'
git tag
git push origin 0.1.0

删除本地tag  git tag -d 0.1.0
删除远端tag  git push origin :refs/tags/0.1.0

.podspec文件配置

#
# Be sure to run `pod lib lint SYCoreKit.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'xxxxx'  #搜索的关键词,注意这里一定要和.podspec的名称一样
  s.version          = '0.0.1' #版本号,每一个版本对应一个tag
  s.summary          = "iOS框架" #项目简介
  s.description      = "iOS框架" #pod详细描述
  s.homepage         = 'http://114.116.222.206:9002/zhangchao/siyucorekit.git' #项目主页地址
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' } #许可证
  s.author           = { 'superMan' => 'xxxxxxxx' }#作者
  s.source           = { :git => 'http://xxx.git', :tag => s.version.to_s }#项目的地址
  s.social_media_url = 'https://twitter.com/xxx'#作者社交地址
#  s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64'} 是修改当前pod工程中的项目设置
#  s.user_target_xcconfig = { 'VALID_ARCHS' => 'arm64','EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'}  是修改当前用户工程中的项目设置
  s.ios.deployment_target = '12.0' #支持的pod最低版本
  s.static_framework = true #动态库模式pod
  s.requires_arc     = true # 是否启用ARC
  s.source_files = 'SYCoreKit/Classes/**/*' #需要包含的源文件
  
  # s.resource_bundles = {
  #   'SYCoreKit' => ['SYCoreKit/Assets/*.png']
  # } 资源文件

  # s.public_header_files = 'Pod/Classes/**/*.h' #标记公共头文件列表
  s.ios.frameworks = "UIKit", "Foundation" #支持的系统框架
  s.dependency 'YYModel', '1.0.4'#三方依赖
end

检查规范

pod spec lint PodName.podspec 

提交pod

pod repo push 索引库 podName.podspec--verbose--use-libraries--allow-warning
上一篇下一篇

猜你喜欢

热点阅读