美文网首页iOS开发iOS开发iOS 开发成长中心
[原创]使用Cocoapods从零开始搭建组件库

[原创]使用Cocoapods从零开始搭建组件库

作者: 程序员阿杰 | 来源:发表于2017-02-15 12:57 被阅读101次

很久以前写的公司内部的分享资料,现在拿出来供大家参考。

Cocoapods也不是什么新东西了,基本用法按下不表,我最喜欢它的两个功能是:LocalPods和cocoapods私有库。本文以搭建一个组件库为例介绍如何使用cocoapods私有库。

1、搭建组件库

具体分为7步

a) 申请开通git仓库:http://git.xxx.cn/apps/iOSComponents.git

b) 在git仓库中初始化Spec Repo

c) 开发组件

d) 创建该组件对应的Podpodspec文件,转成Pod

e) 将组件的代码放入代码仓库(可以是git或者svn)

f) 本地测试配置好的podspec文件是否可用

g) 向Spec Repo中提交podspec

步骤a)没什么好说的,找公司的git管理员申请一个git仓库即可,注意要给合作的同学们都开好相应的权限

步骤b)

每个pod工程都有一个索引文件以.podspec结尾,该文件描述了pod工程的所有内容,包括最重要的源码地址以及依赖关系。使用pod update来添加新的依赖时,cocoapod就是先找到新依赖的.podspec文件,再顺着它来下载、配置新工程。而cocoapod去寻找.podspec文件的地方,就是Spec Repo。说得更简单些,一个Spec Repo就是一个Git Repo,它的文件结构如下:

.

├── Specs

          └── [SPEC_NAME]

                   └── [VERSION]

                            └── [SPEC_NAME].podspec

了解原理后,执行下面这条命令让本机的cocoapod认识我们刚申请的git仓库,并把它当成Spec Repo

命令声明:# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

用法举例:$ pod repo add ComSpecs http://git.xxx.cn/apps/iOSComponents.git

步骤c) 开发组件

假装我们开发完了一个组件,名字叫Component1

步骤d) 转化成Pod

先把Component1文件夹下的内容剪切到其他地方(比如A文件夹)

先cd到Component1文件夹下然后执行如下命令

$ pod lib create Component1Lib

之后他会问你四个问题,1.是否需要一个例子工程;2.选择一个测试框架;3.是否基于View测试;4.类的前缀;4个问题的具体介绍可以去看官方文档,我这里选择的是1.no;2.Specta/Expecta;3.no;4.PTL。 问完这4个问题他会自动执行pod install命令创建项目并生成依赖。生成的文件夹结构如下

Component1Lib

├── LICENSE                              #开源协议 默认MIT

├── Pod                                      #组件的目录

│  ├── Assets                            #资源文件

│  └── Classes                              #类文件

├── Component1Lib.podspec          #第三步要创建的podspec文件

└── README.md                                #markdown格式的README

然后,将刚才提到Component1文件夹内原来的内容拷贝回来,源码放进Classes文件夹,资源文件放进Assets文件夹。再用文本编辑器打开Component1Lib.podspec,对照一下里面各种参数是否正确,具体用法参见官网例子,这里不展开讨论。

e) 提交代码

将刚才我们修改后的Component1Lib文件夹提交到代码仓库,可以是git也可以是svn,区别就是Component1Lib.podspec中source的写法会有区分。

f) 本地测试podspec文件

在Component1Lib文件夹下执行如下命令

$ pod lib lint --verbose

可能会有些warning或者error,根据提示修改即可

g) 向Spec Repo推送.podspec

执行如下命令:

$ pod repo push DJSpecs PodTestLibrary.podspec


至此,我们的私有库创建完毕,并且提交了第一个组件,然后,我们来看看,其他的同学该如何使用这个组件库。

2、使用组件库

a) 添加私有pods库

命令声明:# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

用法举例:$ pod repo add ComSpecs http://git.xxx.cn/apps/iOSComponents.git

添加完之后,本机的Cocoapod在搜索新的Pod依赖时,就会顺道来我们的ComSpecs中寻找。

b) 编辑podfile文件,并update

这步比较简单,冒号后面是我们组件代码真正的地址,理论上不写也可以的,但是实践过程中发现写了比较保险

platform :ios, '7.0'

pod 'Component1Lib', :svn => "http://svn.xxx.com/trunk/ios/Components/Component1Lib"

再执行pod update,Component1Lib就添加到了你的主工程中。

相关文章

  • [原创]使用Cocoapods从零开始搭建组件库

    很久以前写的公司内部的分享资料,现在拿出来供大家参考。 Cocoapods也不是什么新东西了,基本用法按下不表,我...

  • 使用CocoaPods创建私有库

    最近在研究使用CocoaPods创建私有库,因为公司要使用组件化,然后打算用cocoapods来管理各个组件,那就...

  • 代码管理| 创建自己的私有Cocopods库

    前言 iOS组件化的实现基本基于cocoapods,如何使用cocoapods创建自己的组件库,是实现组件化的第一...

  • iOS组件化探究之私有库的创建

    iOS组件化实现基本基于cocoapods,如何使用cocoapods创建自己的组件库,是实现组件化的第一要素,下...

  • 组件化总结

    一.git的使用 二、CocoaPods的使用 使用框架者 发布框架者 三、CocoaPods私有库 四、组件化实...

  • iOS 组件化-本地私有库

    CocoaPods本地私有库 组件化-使用CocoaPods管理的本地私有库,可以分为3种 本地私有引用 本地工程...

  • iOS中常见的第三方组件

    1、使用CocoaPods安装 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebIma...

  • 制作CocoaPods

    iOS管理第三方库大多使用CocoaPods,如果需要实现组件化或者发布自己的开源库/私有库到CocoaPods,...

  • iOS组件化-CocoaPods

    组件化练手,首先先使用CocoaPods创建本地私有库和远程私有库。CocoaPods大家都用过,那就废话不多说了...

  • 组件化(第一篇)

    组件化 git 常用操作指令 cocoapods的基本使用 cocoapods本地私有库 一、git 常用操作指令...

网友评论

  • 天口三水羊:如果pod工程引用了某个库 并且主工程引用了swift库 那么会造成pod工程引用的oc库无法集成 怎么解决
    程序员阿杰:@天口三水羊 了解你的问题了,这个是Static Transitive Dependencies问题,github上有issue:https://github.com/CocoaPods/CocoaPods/issues/2926。我周末写了个demo,使用mhuusko5的方法确认没问题,github地址:https://github.com/kphungry/PodsDemo
    天口三水羊:@程序员阿杰 比如壳工程引用swift库charts 所以podfile需要添加useframework 然后让壳工程依赖你自己写的pod 你自己写的pod会依赖百度地图的pod 这样你自己写的pod会无法集成到壳工程
    听懂了吗
    程序员阿杰:可否描述的再清晰一下,我使用过oc、swift混编,并没有出现过你说的问题,“主工程引用了swift库”引入的什么库?“oc库无法集成”的具体体现是什么?

本文标题:[原创]使用Cocoapods从零开始搭建组件库

本文链接:https://www.haomeiwen.com/subject/uqhqwttx.html