SDK上传到Cocoapods

写在前面

Cocoapod可以管理SDK的代码进行组件化开发也可以将开发完成的SDK托管到Cocoapods,采用pod'xxxSDK'的方式自动集成SDK,本文是将开发好的SDK打包好上传到cocoapods,通过pod 'XXXSDK'的方式将SDK集成到项目中,告别手动集成,并且生成私人repo,让pod的速度向飞一样。

一、创建仓库

1.在github上或者码云(这里建议码云,因为码云是国内的速度快)上创建两个仓库,一个代码仓库用来存放打包好的SDK和SDK需要的资源文件,一个spec仓库负责存放podSDK需要的索引。

两个仓库全部设为开源,需要创建完成后去管理修改,LICENSE选择MIT
截屏2022-02-23 下午8.44.10.png

创建好如图所示
仓库截屏2022-02-23 下午8.30.17.png

2.将存放SDK的仓库clone下来

git clone https://gitee.com/allook/YLUISDK.git

YLUISDK文件中创建Lib文件夹存放SDK,Resources文件存放资源文件,如图所示。
截屏2022-02-23 下午9.04.37.png

二、开始创建并配置.podspec文件

cd到YLUISDK文件中

pod spec create YLUISDK

会生成YLUISDK.podspec文件,将文件打开方式更改为Xcode,开始编辑,关于.podspec文件的语法可自行百度查看,以下配置仅适用于开发好的SDK上传到Cocoapods。

Pod::Spec.new do |s|

  # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  #
  #  These will help people to find your library, and whilst it
  #  can feel like a chore to fill in it's definitely to your advantage. The
  #  summary should be tweet-length, and the description more in depth.
  #

  s.name         = "YLUISDK"
  
  s.version      = "3.4.5"
  
  s.summary      = "yllan of YLUISDK."
  
  s.description  = " 这是一个短视频、小视频的SDK"
  
  s.homepage     = "https://gitee.com/JabneCode/YLUISDK"
  
  s.license      = { :type => "MIT", :file => "LICENSE" }
  
  s.author       = { "zhangbin" => "[email protected]" }
  
  s.platform     = :ios, "9.0"

  s.source       = { :git => "https://gitee.com/JabneCode/YLUISDK.git", :tag => "3.4.5" }
  
  // 将打包好的SDK放到对应目录,pod 'YLUISDK'执行后,SDK就乖乖到pod里面去了
  s.vendored_frameworks = "Lib/YLUISDK.framework"
  
  // 表明支持的架构模式
  s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }
  
  // 这个是SDK需要的资源文件,这样写到时候会生成一个YLUISDKResource.bundel文件放到.app的包里面,这样SDK直接就能读取了。
  s.resource_bundles = {
    'YLUISDKResource' => ['Resources/*']
  }

三、开始验证.podspec的合法性,并上传SDK到Cocoapods。

每次编辑更新完.podspec文件和Lib、Resources以后和,需要做以下操作,需要注意的是这里可能没有权限进行push,需要编辑隐藏文件.git中的config文件,这样就有权限push了。
截屏2022-02-23 下午9.15.12.png

git add .
git commit -am "版本号之类的描述"
git push
git tag 3.4.5 // 这个版本号要和.podspec文件中的一一对应。
git push --tags
pod spec lint --skip-import-validation --allow-warnings

不出意外应该会出现以下结果,如果发生错误需要仔细检查.podspec文件的内容。

截屏2022-02-23 下午9.24.13.png

注意:每次发布新版本都要进行以上几步。

一切具备,开始上传SDK到Cocoapods。

// 注册cocoapods作者
pod trunk register 自己的邮箱 "SDK的作者"
// 查看注册好的用户
pod trunk me
// cd到存放.podspec文件的YLUISDK中执行上传
pod trunk push ./YLUISDK.podspec --skip-import-validation --allow-warnings

四、开始使用

现在就可以在自己的podfile文件中添加pod 'YLUISDK'来测试成果了。

五、生成私人repo

上面发布完成后,索引默认是在这个地址https://github.com/CocoaPods/Specs。本地索引会下载到~/.cocoapods/repos/master,这也是cocoapods默认的索引地址
截屏2022-02-23 下午9.38.51.png

因为github是国外的网站,访问会很慢,所以我们需要建立一个自己的索引仓库。还记得开始建立的仓库吗。现在你需要这个仓库clone到~/.cocoapods/repos,将之前编辑好的YLUISDK.podspec文件copy到这里面。cd到这个仓库目录下然后执行

git add .
git commit -am "提交信息"
git push
// yilan-spec是你索引仓库的名字  YLUISDK.podspec是你刚才copy的文件
pod repo push yilan-spec YLUISDK.podspec --skip-import-validation --allow-warnings
截屏2022-02-24 上午9.59.56.png

执行完成后你去~/.cocoapods/repos中查看自己创建的索引库和自己码云上创建的spec仓库就已经有当前版本的信息了。

[图片上传中...(截屏2022-02-24 上午10.02.24.png-dfabee-1645668161718-0)]
截屏2022-02-24 上午10.02.24.png

下面开始测试自己的仓库

// 记得添加自己的源文件
source 'https://gitee.com/allook/yilan-spec.git'
pod 'YLUISDK'

六、总结Cocoapods原理(个人理解)

cocoapods是怎么将SDKpod到项目中的呢?执行pod install以后,cocoapods会根据podfile中的source(也就是.spec文件存放的仓库)去下载索引到电脑的/.cocoapods/repos文件中,让后根据索引中的SDK仓库地址去下载SDK并集成到项目中。所以Cocoapods遇到各种找不到最新版的的库或者pod不下来等问题全是本地的索引有问题,需要提示客户直接去/.cocoapods/repos中找到你自己创建的source(我这里创建的就是yilan-spec),cd到这个目录下执行git pull这样客户就能拉取到最新的索引了,在到项目中执行pod install 就能正常的pod下来我们库了。这就是为啥开头推荐大家用码云,因为码云是国内的网站,push、pull操作都很流畅,这样会打打提高工作效率,github就不好说了,即使用了VPN也可能发个版本卡半天。这就是我最近工作中的心得分享给大家,希望能帮助到一些新手开发人员少走一些弯路,欢迎大佬指正。

你可能感兴趣的:(SDK上传到Cocoapods)