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

2018.04.12 16:43* 字数 1168 阅读 244评论 0喜欢 1

目的:1.管理自己常用的类;2.组件化开发

步骤:

1.想一个比较酷的名字,在桌面简历文件夹。

2.打开terminal,cd到这个文件夹下面,执行pod lib create  xxx(这里我们以JJCategoryKit为例子,下同)命令,如下图。这个过程会问几个问题,根据实际情况输入回答即可。这里我们选择添加demo,结束的时候会自动Lanuch这个app.

localhost:JJCategoryKit Jason$ pod lib create JJCategoryKit

 

3.将你需要制作的库文件,添加到Classes文件夹中,如下图所以。

 

4.修改JJCategoryKit.podspec索引。主要是修改s.homepage,s.source ,s.source_files,s.public_header_files。其中s.dependency为我们所依赖的第三库。其他诸如s.version ,s.summary等根据时间情况修改。

5.cd到Example下面运行pod install --no-repo-update 命令。这是点击workspce打开工程就可以看到我们添加的文件已经可以在工程里面了。

6. cd 到Example 上一层,(如果是在Example下可以cd ..)用pod lib lint 检测podspec是否正确。通常情况下是没有问题的,如果有错误根据提示修改就可以了,都是基本错误。

localhost:JJCategoryKit Jason$ pod lib lint

->JJCategoryKit (0.1.0)

- ERROR | [iOS] file patterns: The `public_header_files` pattern did not match any file.

如这个错误就是s.public_header_files 要从'Pod/Classes/**/*.h' 改为'JJCategoryKit/Classes/**/*.h'。

 

看到这里也许有人发现第4步中的s.homepage,s.source 地址我们没有,这里说明。这个只需要我们在github或者oschina新建repositories 仓库即可。Repository name最好和你的库名称保持一致。 s.source就是对应的仓库地址,s.homepage对应主页,我们可以找一个好的页面或则直接就是你的GitHub主页也可以。

 

7.到这里本地的工作差不多已经做完了,接下来就是将我们的工程push到s.source对应的github仓库了。

依次执行:

localhost:JJCategoryKit Jason$ cd /Users/Jason/Desktop/JJCategoryKit/JJCategoryKit

localhost:JJCategoryKit Jason$ git remote add origin https://github.com/anhuijhy/JJCategoryKit.git

localhost:JJCategoryKit Jason$ git add .

localhost:JJCategoryKit Jason$ git commit -a -m "0.1.0"

localhost:JJCategoryKit Jason$ git pull origin master

localhost:JJCategoryKit Jason$ git push origin master

localhost:JJCategoryKit Jason$ git tag 0.1.0

localhost:JJCategoryKit Jason$ git push origin 0.1.0

不出意外我们异步到github就可以看到我们的push了。而且包含了sepc中的相关信息,但是如果我们pod的话却发现没有找到我们pod库,那是因为公用的pod是要把spec上传到cocospod官方的。接着往下看........

 

8.将spec索引上传到官方需要先注册,命令如下

pod trunk register 电子邮箱 '您的姓名' --description='macbook pro'

注意邮箱必须正确,收到邮件后需要点击连接确认激活。

 

9.激活后江spec push到官方,这个过程可能需要一点时间,请耐心等等待。

localhost:JJCategoryKit Jason$ pod trunk push JJCategoryKit.podspec

 

等待之后就是✌️,如下图。

 

此时,在去github看的话,一些管pod的说明,也自动变好了。pod库终于可以使用了。


如果需要修改,执行下面的命令以提交更新..

git commit -m "1.0.0" (先提交当前修改)

git tag 1.0.1 (添加tag)

git push --tags (推送tag到远程)

git push origin master (推送到远程到代码仓库)

pod trunk push JJCategoryKit.podspec


10.如果pod 是私有,比如组件化开发,就不需要发布到官方,可以自己在github创建spec索引(也就是新建一个Repository),然后关联

a.pod repo可以查看本地索引库。

b.pod repo add <本地索引库的名字>  <远程索引库的地址> ,创建本地索引库并和远程索引库做关联(注:本地索引库的名字建议和远程索引库起的名字一样)。

c.cd 到本地索引库前面,pod spec lint - -verbose - -allow-warnings 检测索引库。

c.pod repo push <本地索引库> <索引文件名> - -verbose - -allow-warnings,提交到远程索引库。

d.pod需要使用的时候需要添加source '私有库地址' 到podfile文件。

11.错误解决:

a.如果trunk push 出现 error: include of non-modular header inside framework module ··· [-Werror,-Wnon-modular-include-in-framework-module] 可以 加上--use-libraries解决。

b.如果出现waring 可以加入 --allow-warnings

制作自己的Pod库(公有/私有)的更多相关文章

  1. 制作CocoaPods公有库和私有库

    认识公有库和私有库 公有库:开源自己封装的库供别人使用,且往cocoaPods的官方Repo仓库(即CocoaPods Master Repo)中新增自己库的索引,该库索引是以*.podspec.js ...

  2. Cocoapods 创建自己的公开库、私有库

    如何创建自己的共有库 1.注册Trunk trunk需要CocoaPods 0.33版本以上,用pod --version 命令查看版本 CocoaPods版本 如果版本低,需要升级: sudo ge ...

  3. iOS组件化开发一pod库包含MRC的文件处理(五)

    在做项目的过程中,建立了一个私有pod库,在这个库中存在mrc类文件这个时候如果在使用了arc的工程中引用这个pod的工程中手动设置当然也可以就是费时费力.现在我们来看看如何在私有库配置文件里配置自动 ...

  4. CocoaPods 构建自己的 Pod 库

    构建一个自己的库供其它人使用是不是一件很酷(苦)的事情,通过CocoaPods 可以快捷的构建自己库,并向全世界分享你的成果 一.创建 Podspec 有两种方式: 使用命令 pod lib crea ...

  5. xcode6制作IOS .a静态库小记

    xcode6制作IOS .a静态库小记 创建iOS静态库 简单写个打印的代码 编码完成之后,直接Run就能成功生成.a文件了,选择 xCode->Window->Organizer-> ...

  6. 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  7. iOS制作Static Library(静态库),实现多工程的连编

    在iOS开发中,我们会发现一些偏底层或基础代码是直接可以复用的,当我们换一个项目,改变的只需要是偏上层的业务逻辑代码,所以我们可以把这部分基础代码制作为一个静态库static library,并不断扩 ...

  8. Windows 下VC++6.0制作、使用动态库和静态库

    Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一 ...

  9. 关于VS2013下制作和使用静态库和动态库

    关于VS2013下制作和使用静态库和动态库 引言 什么是库:库是写好的现有的,成熟的,可以复用的代码. 所谓静态.动态是指链接.将一个程序编译成可执行程序的步骤: 静态库在链接阶段,会将汇编生成的目标 ...

随机推荐

  1. Android开发:UI相关(一)自定义样式资源

    一.自定义样式资源:   1.在drawble中新建xml资源文件:     如果新建的xml文件没有自动放置在drawable文件夹下,就手动移动到drawable下. 2.编写样式代码: < ...

  2. springboot~mogodb多条件拼接

    起因 当前我们使用mongodb进行查询时,有时我们的条件是分块生成的,它可能来自一个列表里,我们的条件需要根据列表去返回数据,这里有个问题,如果遍历列表,然后每次都去从mongodb里查询数据 ,这 ...

  3. IO 和 NIO 的思考

    输入输出是操作系统不可或缺的一部分,大致分为两类:面向磁盘和面向网络.在 Java 中有3种 I/O 类型:BIO.NIO 和 AIO,分别是同步阻塞.同步非阻塞和异步非阻塞 I/O,这里着重描述 B ...

  4. jquery快速入门(一)

    一.jquery加载文档 jquery加载文档(也叫入口函数) $(document).ready(function(){ // 这里写 jQuery 代码... }); 简写方式: $(functi ...

  5. 树莓派播放视频的播放器omxplayer

    omxplyer为树莓派量身定做的一款GPU硬件加速的播放器,很好的解决了树莓派cpu计算力不足的缺点.(播放时cpu一定都不烫手) 1.安装方法: CTRL + ALT + T 调出终端命令行输入 ...

  6. Servlet常用的接口和类

    使用接口和类的作用:Servlet也是依靠继承父类和实现接口来实现的.使用Servlet必须要引入两个包:javax.servlet和javax.servlet.http.所有的Servlet应用都是 ...

  7. android activity的生命周期和启动模式

    activity是android开发的基本中的基本每一个项目都会有activity.activity有自己的生命周期,在网上有很多博客和资料,在这里我也只是印证一下. 一个activity: 在打开a ...

  8. Android中的线程池

    在Android中,主线程不能执行耗时的操作,否则可能会导致ANR.那么,耗时操作应该在其它线程中执行.线程的创建和销毁都会有性能开销,创建过多的线程也会由于互相抢占系统资源而导致阻塞的现象.这个时候 ...

  9. log4net使用封装,无缝切换 dotnet 和 dotnetcore

    log4net使用封装,无缝切换 dotnet 和 dotnetcore Intro 自己有几个自己的小项目,有许多公用的方法/扩展/工具类等等,于是封装了一些常用的工具类/扩展方法 WeihanLi ...

  10. [SQL Server] 时间处理:获取今天的00:00:00/获取今天的23:59:59

    获取今天的00:00:00 SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10),GETDATE(),120)) 获取今天的23:59:59 1.SELECT DAT ...