美文网首页Cocoa 框架pod
CocoaPods库搭建及托管实践

CocoaPods库搭建及托管实践

作者: 民谣里不是故事就是诗丶 | 来源:发表于2018-09-19 21:11 被阅读86次

惯例吹水

众所周知CocoaPods,已经成为iOS/Mac OS程序员离不开的三方库管理工具。

除了我们引用一些知名的大佬框架以外,有时候我们也想分享一下自己的小轮子,或者托管自己的私有框架,尤其是组件化需要,想要上传属于自己的CocoaPods怎么办呢?

查阅了官方文档和一些前辈们的blog,感觉并不难,为了便于理解每一步命令的作用,决定还是需要自己手撸一遍。

什么是CocoaPods

Define once, update easily。看到宣传标语就感觉很easy。CocoaPods是OS X和iOS下的一个第三类库管理工具,通过PodFile文件我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。

怎么安装CocoaPods

官方app下载地址

https://CocoaPods.org/app

民间小白鼠🐁教程

https://www.jianshu.com/p/e85e71ed64e6

涉及到的一些概念

Podfile: 该文件为配置引用三方库文件,指定引用的库以及版本。

Podfile.lock: cocoapods根据本地podfile和远端仓库生成版本管理文件,便于用户协作。

.xcodeproj: iOS项目工程目录,本质是个文件夹,可用Xcode打开。

.xcworkspace:工作空间,联合多个项目工程,pod install后自动生成。

.podspec : 该文件为你的代码仓库索引描述文件,CocoaPods通过该文件对你真正存储代码工程的 Git 仓库进行索引与下载

本博客演示所用文件

SoulToolsLibrary: 托管我们的实现代码(根据公有私有选择是否公开),需要remote对应远程Git仓库

SoulPrivatePodspec: 托管我们生成的Podspec文件(私有Pod才用),私有库隐藏了源码则需要公开本仓库

SoulTestDemo: 模拟三方用户新建工程测试我们的Pod,不需要远程仓库,如果你非要建,就当我没说

以上文件目录,均放在~/MyPodLibrary目录里了,方便演示

image-20180920110426392.png

上传一个公有Pod


官方文档如下

https://guides.CocoaPods.org/making/index.html

  1. 搜索有没有同名库

    (因为最后一步CocoaPods会校验同名的库只有原作者才能上传)

image-20180919205834417.png
  1. 创建远程仓库

我这里采用的gitee.com。其实和github.com是一样的,不过github只能建一个私有仓库不够用,所以就用码云了。

a.首先必须创建SoulToolsLibrary,这个仓库用来保存我们的轮子源码。
开源的话记得选开源许可证,我就直接MIT了;不开源的话,需要创建SoulPrivatePodspec仓库。这里不需要添加.Readme初始化,因为后边pods会自动帮我们添加Readme模板。

Gitee

创建完成后无需Clone到本地目录,等下把CocoaPods自动生成的同名目录Remote过来就好了。后面我直接用SourceTree了,方便演示,当然也可以用命令行。
(本模块演示公有Pod,可以直接跳转到步骤c,私有的需要b的,下个模块单独解释。)

b.其次私有库的话需要创建SoulPrivatePodspec,这个仓库用来储存各个版本的.podspec索引文件
直接开源就好,不然别人pod install的时候,还要获取你这个git权限。
创建完成后Clone到本地目录,我这里直接用SourceTree了,方便演示,当然也可以用命令行。

c.最后我们本地再建一个目录SoulTestDemo,用来模拟第三方用户工程测试我们pod能不能用,这个就留在本地就好了,不用同步到远端了。

最后目录如下图


演示文件目录.png
  1. 本地新建工程


    本地新建测试工程.png

我们现在需要通过github的模板生成自己的Pod库开发环境

/*进入本地目录*/
cd ~/Users/mac/MyPodLibrary/SoulToolsLibrary

/*创建我们的pod库开发环境*/
pod lib create SoulToolsLibrary

/*配置开发环境*/
直接回车就是带下划线的默认值,具体配置如下附图

/*说明*/
配置完成后 会自动创建并打开Workspace

附图: image-20180920115446795.png
   //platform 发布平台
    iOS
    //language 开发使用的语言
    ObjC
    //demo 是否包含演示程序;有两个用途:1.编写框架的时候可以用来测试,2.支持pod try MyLib(SoulToolsLibrary)
    Yes
    //testing frameworks 使用什么测试框架;
    None
    //view base testing 是否使用基于视图的测试;亲测选择yes的话,将自动导入FBSnapShotTestCase,这个框架只支持swift3.0,要求Xcode8一下...
    NO
    //class prefix 类名前缀;建议两位大写英文字母
    ST
  1. 编写Library以及Demo
编写Library以及Demo.png

a.在上述自动打开的workspace,我们可以看到就说熟悉的pod install之后生成xworkspace是一样的,唯一不同的就是Pod引用我们自己的库的路径是本地相对路径。红框内的内容及Podspec的描述,两个红框指向的是同一文件;LICENSE即开源许可,一般不用管;README也是Cocoapods自动生成的描述,按照原有格式修改即可。

b.在上图中ReplaceMe.m文件处右键,Show in Finder。我们会发现两个平级目录,一个Classes保存我们类,还有一个Assets保存的是资源文件,例如图片等。这个示例文件ReplaceMe.m可以删除。


i自动生成的文件目录.png

c.我们添加一个自定义类和方法,实现我们的库。


随手写个类方法.png

d.在Demo实现调用,我们打印一下。尖括号引用,完美运行~


image-20180920171039773.png
  1. 配置xxx.podspec文件
    s.name : 项目名

    s.version : 版本号(需跟后面打 Tag 的值相等)

    s.homepage : 项目主页(请注意,这里的地址跟git仓库地址有一定差别,请同学们看清截图示例并区分)

    s.license : 开源协议(这里我们选择 MIT )

    s.source : Git 仓库地址(第二步所复制的仓库地址)

    s.ios.deployment_target : 项目最低支持版本

    s.source_files : 具体去那个目录下下载特定共享代码(注意:这里的地址与 .podspec 文件同级目录开始,,示例:PrivateLib/Classes/** /*表示如下目录下的所有文件
image-20180920172749679.png
image-20180920172815009.png
  1. 验证.podspec 文件的格式正确性
  pod lib lint --verbose

出现下图,即代表成功;
这里有个小技巧,就是lint前可以先回到xcodeproj目录pod install一下,自己排查有没有编译问题;
如果还有其他报错例如描述不合法等情况,修改后重新lint即可。

image-20180920175435541.png
  1. 上传到Git,并标记Tag


    image-20180920184108974.png
  1. 注册CocoaPods作者信息
    a.现在你已经拥有一个成功的SoulToolsLibrary了,现在想要share到平台上,那么是不是需要注册一个账号呢?ok通过以下命令,将会给你的邮箱发送一封邮件,点击链接即可注册成功。
 pod trunk register yourEmail@gmail.com 'yourName' --description='Soul Personal Laptop' --verbose
i申请账号.png 去邮箱查询邮件.png 点击激活链接之后.png 搞定.png

账号创建完毕!~~

  1. 使用trunk上传pod
pod trunk push SoulToolsLibrary.podspec --verbose
image-20180920190141130.png

感觉ok了,可以访问看一下这个json,一目了然就不分析了。
https://raw.githubusercontent.com/CocoaPods/Specs/b2c3735a9046e5373956b35a510414a93b0af5ff/Specs/4/b/a/SoulToolsLibrary/0.1.0/SoulToolsLibrary.podspec.json

  1. 搜索验证并使用
    a.新建一个项目,并初始化Pod


    image-20180920193107194.png

b.编辑Podfile并install


image-20180920193647745.png

c.Test调用打印


image.png

d.pod Search 一下 or pod try 一下;记得先pod setup更新一下本地库


image-20180920191220476.png

上传一个私有Pod(对比公有)


1.托管代码的SoulToolsLibrary需要关闭开源。
2.将生成的podspec文件托管到SoulPrivatePodspec中,SoulPrivatePodspec仓库可以开源。
3.pod install的时候需要验证Git权限,即登录账号密码。

相关文章

  • CocoaPods库搭建及托管实践

    惯例吹水 众所周知CocoaPods,已经成为iOS/Mac OS程序员离不开的三方库管理工具。 除了我们引用一些...

  • CocoaPods私有库搭建说明

    CocoaPods私有库搭建说明 关于CocoaPods CocoaPods是Swift和Objective-C ...

  • 实践CocoaPods库的制作

    本篇内容基于 CocoaPods V1.6.0 实践公有库及私有库的制作 前言 作为一名iOSer,我们知道Coc...

  • 创建自己的pod库和打包静态链接库.a

    创建pod工程 现在有很多工程都是用Cocoapods管理了,如果你想把自己的库托管给CocoaPods,那么只需...

  • CocoaPods开源库的搭建

    前言 如果你看了我之前写的文章《CocoaPods私有库的搭建》,而且有过实战,你会发现《CocoaPods开源库...

  • cocoapods的使用(一)

    今天下午研究了一下怎么将自己项目托管到cocoapods上,以及如何建立自己的cocoapods私有代码库。现在记...

  • Pod搭建开源库小结

    1./Users/xxx/.cocoapods/repos 不管是搭建私有库还是开源库,这个路径下版本库repos...

  • Cocoapods私有库搭建

    最近在整理组件化相关的东西,其中有一项就是用pod管理内部的一些公共组件,为了加深印象,下面把具体步骤记录一下(注...

  • cocoapods 私有库搭建

    直入正题,原理性的东西边写边讲吧~。 首先我们需要用到两个私有git仓库,一个用于存放我们私有代码库,一个用于存p...

  • 搭建CocoaPods私有库

    因为公司的需要重新搞了一次CocoaPods,于是记录一下这次折腾下来的整个过程。 准备 开始之前,先说一下开发环...

网友评论

    本文标题:CocoaPods库搭建及托管实践

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