CocoaPods 创建私有 podspec

Cocoapods是非常好用的一个iOS
依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理。

前言

创建一个开源pod库,需要注册CocoaPods,终端执行:

pod trunk register 邮箱地址 '用户名' --verbose

这里我们一般使用github邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功;

注册成功

查看自己的注册信息,以后当你有了自己的开源Pod库,也可以用此方式随时查看自己发布过的Pods;终端执行:

pod trunk me
注册信息

使用Cocoapods创建私有的podspec库包含以下几个步骤:

  • 创建并设置一个私有的 Spec Repo
  • 创建 Pod 的所需要的项目工程文件,并且有可访问的项目版本控制地址。
  • 创建 pod 所对应的 podspec 文件
  • 本地测试配置好的 podspec 文件是否可用
  • 向私有的 Spec Repo 中提交 podspec
  • 在个人项目中的 Podfile 中增加刚刚制作好的 pod 并使用
  • 更新维护 podspec
1. 创建私有 Spec Repo

Spec Repo 是所有的 Pods 的一个索引,就是一个容器,所有公开的 Pods 都在这个里面,他实际是一个 Git 仓库 remote端GitHub上,但是当你使用了 Cocoapods 后他会被 clone 到本地的 ~/.cocoapods/repos 目录下,可以进入到这个目录看到 master
文件夹就是这个官方的 Spec Repo 了.

创建一个类似于 master 的私有 Spec Repo

  • git 上创建私有库索引库,得到地址如下:
git@gitlab.**.com:**/**/specs.git
  • 在本地添加一个自己的远程索引库,地址为上面创建的私有库索引库地址
pod repo add **-specs https://**.com:**/**/specs.git

执行成功后在 ~/.cocoapods/repos 目录下可以看到 **-specs 这个目录.

2. 创建Pod项目工程文件

如果是有现有的组件项目,并且在 Git 的版本管理下,那么这一步就算完成了,可以直接进行下一步了.
使用 pod 创建 Pod 项目, 相关的文档介绍是Using Pod Lib Create

  • cd 到要创建项目的目录,然后 Terminal 执行:

    pod lib create 项目名称
    

之后他会问你几个问题:

1.你想使用哪种语言
2.是否需要一个例子工程;
3.选择一个测试框架;
4.是否基于View测试;
5.类的前缀;
这几个问题的具体介绍可以去看官方文档.
问完这几个问题他会自动执行 pod install 命令创建项目并生成依赖。

接下来就是向 Pod 文件夹中添加库文件和资源,并配置 podspec 文件,我把共有组件放入 Pod/Classes 中,然后进入Example 文件夹执行 pod update 命令,再打开项目工程可以看到刚刚添加的组件已经在 Pods 子工程下 Development Pods/BitautoTool 下了.

PS:这里需要注意的是每当你向 Pod 中添加了新的文件或者以后更新了 podspec 的版本都需要重新执行一遍 pod update 命令

测试无误后需要将该项目添加并推送到远端仓库.
因为 podspec 文件中获取 Git 版本控制的项目需要 tag 号,所以我们需要打上一个 tag.

然后开始编辑 podspec 文件,没有涉及到的字段可以去官方文档查阅.

编辑完 podspec 文件后验证这个文件是否可用,详情见 CocoaPods创建公有pod库

3. 创建podspec文件

如果从 第2步跳过来 的(否则跳过此步),已经有了现成的项目,那么就需要给这个项目创建一个 podspec 文件,创建它需要执行 Cocoapods
的另外一个命令,官方文档,Terminal 执行:

pod spec create podspec名称 git@**.com:WP/APP/**.git

执行完之后,就创建了一个 podspec 文件,他其中会包含很多内容,可以按照我之前介绍的进行编辑,没用的删掉。编辑完成之后使用验证命令验证一下,详情见 CocoaPods创建公有pod库
验证无误就可以进入下一步了.

4. 本地测试podspec文件

我们可以创建一个新的项目,在这个项目的 Podfile 文件中直接指定刚才创建编辑好的 podspec 文件,看是否可用。 在 Podfile 中我们可以这样编辑,有两种方式:

platform :ios, '8.0'

pod 'BitautoTool', :path => '/Users/**/Documents/BitautoTool'      # 指定路径
pod 'BitautoTool', :podspec => '/Users/**/Documents/BitautoTool/BitautoTool.podspec'  # 指定podspec文件

然后执行 pod install 命令安装依赖,打开项目工程,可以看到库文件都被加载到 Pods 子项目中了,不过它们并没有在Pods目录下,而是跟测试项目一样存在于 Development Pods/BitautoTool 中,这是因为我们是在本地测试,而没有把 podspec 文件添加到Spec Repo 中的缘故.

5. 向Spec Repo提交podspec

向私有 Spec Repo 提交 podspec 只需要一个命令

pod repo push bitauto-specs BitautoTool.podspec --allow-warnings --use-libraries --verbose --no-clean --skip-import-validation

前面是本地 Repo 名字,后面是 podspec 名字
--use-libraries:使用libraries和frameworks
--allow-warnings:忽略警告
--verbose:详细输出
--skip-import-validation:lint 将跳过验证 pod 是否可以导入

完成之后这个组件库就添加到我们的私有 Spec Repo 中了,可以进入到 ~/.cocoapods/repos/bitauto-specs 目录下查看。

再去看我们的 Spec Repo 远端仓库,也有了一次提交,这个podspec也已经被 Push 上去了。

至此,我们的这个组件库就已经制作添加完成了,使用 pod search 命令就可以查到我们自己的库了。

更新库的时候如果提示找不到本地库,终端执行以下命令:

git reset --hard

然后再执行

pod repo push 本地仓库名 **.podspec

删除一个私有 Spec Repo

pod repo remove bitauto-specs

这样这个 Spec Repo 就在本地删除了,我们还可以通过以下命令加回来

pod repo add bitauto-specs git@**.com:WP/APP/**.git

如果我们要删除私有 Spec Repo 下的某一个 podspec 怎么操作呢,此时无需借助 Cocoapods,只需要 cd~/.cocoapods/repos/bitauto-specs 目录下,删掉库目录

rm -Rf BitautoTool

然后在将 Git 的变动 push 到远端仓库即可

git add --all .
git ci -m "remove unuseful pods"
git push origin master

升级 Xcode14+ 后执行 pod lib lint 报错

    1. 修改 podspec:
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
    1. pod lib lint 添加
--skip-import-validation
  • m1
sudo arch -arm64 gem install ffi

参考资料

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

推荐阅读更多精彩内容