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" => "github@yilan.tv" }
  
  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也可能发个版本卡半天。这就是我最近工作中的心得分享给大家,希望能帮助到一些新手开发人员少走一些弯路,欢迎大佬指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容