CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便。 个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开源库一样在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目录的结构是这个样子的。
因此我们需要创建一个类似于master的私有Spec Repo ,在码云上建立私有私库MYCode_tools_repos作为我们的私有 repo 仓库。现在GitHub 也支持私有库免费的了。
1.1 在码云上创建一个私有“仓”库:
https://gitee.com/muyushifang07/MYCode_tools_repos.git
MYCode_tools_repos 这个库就是存放私有库代码的地方,这里可以放很多其他的你的私有库。也可以把 AFNetworking公开的第三方库放到私有库中管理,而我们的是私有库MYCode_tools_repos还没有库文件,checkout MYCode_tools_repos
到本地然后,我们要把封装好的代码放到这个MYCode_tools_repos文件里push git 的远程私有库中。
1.2 将私有“仓”库添加到本地
pod repo add REPO_NAME SOURCE_URL
$pod repo add MYCode_tools_repos https://gitee.com/muyushifang07/MYCode_tools_repos.git
Cloning spec repo MYCode_tools_repos
from https://gitee.com/muyushifang07/MYCode_tools_repos.git
此时如果成功的话进入到~/.cocoapods/repos目录下就可以看到MYCode_tools_repos这个目录。至此第一步创建私有Spec Repo完成。
PS:如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可。
1.3 准备一个公有库:MYHexTool (因为没有git服务器,所以使用的github的共有库)
首先搜索一下公有库:pod search MYHexTool
公有库的制作:iOS架构-cocoapods之公共库的发布与集成(16)
公有库clone 到本地。
检验pod spec是否可用pod spec lint MYHexTool.podspec
1.4 提交到私有库MYCode_tools_repos中
向MYCode_tools_repos提交podspec首先确保podspec必须通过验证无误
Spec Repo提交podspec只需要一个命令:
$ pod repo push MYCode_tools_repos MYHexTool.podspec #前面是本地Repo名字 后面是podspec名字
完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/MYCode_tools_repos目录下查看如下:
再去看我们的Spec Repo远端仓库,也有了一次提交,这个podspec也已经被Push上去了
至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了
1.5 使用制作好的MYHexTool
在完成这一系列步骤之后,我们就可以在正式项目中使用这个私有的Pod了只需要在项目的Podfile里增加以下一行代码即可
use_frameworks!
source 'https://gitee.com/muyushifang07/MYCode_tools_repos.git' # 私有库源
source 'https://github.com/CocoaPods/Specs.git' # 公开的第三方库源
platform :ios, '9.0'
target 'ProtocolTest' do
#不带:path 的pod install 成功后会生成Pods 文件夹,里面都是远端github的库
pod 'AFNetworking'
pod 'MYHexTool','~>0.1.0'
end
然后执行 pod install
成功后就可以看到效果了
上图黄色提示:找到了多个版本的MYHexTool.因为MYHexTool是公开库,所以有两个版本。如果使用自己的git服务器的库,就不会有这个警告了。可以指定库的来源。
source 'https://github.com/CocoaPods/Specs.git' # public cocoapods specs repo
source 'https://github.com/{:user}/specs.git' # my private specs repo
platform :ios, '11.0'
target 'MyAppTarget' do
use_frameworks!
# any other public pod ...
pod 'PrivatePod', :source => 'https://github.com/{:user}/specs.git'
end
https://stackoverflow.com/questions/54674682/cocopods-found-multiple-specifications-warning
-
ps:需要在Podfile文件的最前面加入
source ‘https://gitee.com/muyushifang07/MYCode_tools_repos.git’ # 私有库源 -
如果你podspec文件已经集成到项目里面,那么可以直接采用自定义集成:
pod ‘MYHexTool’, :podspec => ‘https://gitee.com/muyushifang07/MYCode_tools_repos.git’
-
如果其他人使用该pod,需要输入账号和密码,因为是私有仓库!
友情链接: