描述:我们开发iOS 项目时,几乎每个工程都会集成用cocoapods 管理第三方库,于是就有这样的需求–我分装了一个独立的SDK模块,想让其他人通过pod search 到,并能使用这个开源的SDK。这里就记录一下过程。

例如:pod ‘JSONKit’ 我们在pod 中下载到JSONKit,是因为JSONKit 制作了管理JSONKit的 文件podspec,它是描述库的基本信息。在pod 服务器上注册过了,并且代码传到pod 服务器上了,我们pod 集成到项目中时,会从远端下载JSONKit到本地git。pod 工程管理引用的库。

  1. 在Github 上建立一个SDK 开源repository:MYHexTool。

⚠️:记得Add a license 不然很麻烦。

2. 使用SourceTree checkout repository:MYHexTool到本地

地址 https://github.com/muyushifang07/MYHexTool.git
  1. 将代码放到本地的MYHexTool文件夹中
  2. SourceTree 提交到远程。需要你的github.com 上的用户名、密码
    Github 查看。已经存在了上传的代码。
  3. 因为podspec文件中获取Git版本控制的项目还需要tag号,所以在编辑podspec文件之前我们要打上一个tag:
$ cd 文件目录
$ git tag -m "first release" "0.1.0"
$ git push --tags     #推送tag到远端仓库

需要github用户名、密码
可以看到tag下面一栏有 0.1.0版本(也可以点击release下面有tag)

6. 为创建podspec文件

pod spec create MYHexTool
  1. 编辑podspec内容,大概浏览一下,知道什么意思,修改为下面的:根据自己的实际情况修改
Pod::Spec.new do |s|s.name         = "MYHexTool"s.version      = "0.1.0"s.summary      = "制作自己的pod库 MYHexTool."s.homepage     = 'https://github.com/muyushifang07/MYHexTool.git's.license      = "MIT"# s.license      = { :type => "MIT", :file => "FILE_LICENSE" }s.author       = { 'muyushifang07 ' => 'https://blog.csdn.net/shifang07/article/details/90517002' }s.platform     = :ioss.source       = { :git => "https://github.com/muyushifang07/MYHexTool.git", :tag => "0.1.0" }s.source_files = 'VideoPlayerLib.{h,m}'end

s.source_files = ‘MYHexTool/VideoPlayerLib.{h,m}’ 这里要注意,改成下面的路径
s.source_files = ‘VideoPlayerLib.{h,m}’

  1. 检验pod spec是否可用:pod spec lint
    [可以添加–verbose来查看具体信息,这里信息比较多,不建议使用,可以没事看看]
lzz-Mac-mini:MYHexTool suning$ pod spec lint-> MYHexTool (0.1.0)- WARN  | [iOS] license: Unable to find a license file- NOTE  | xcodebuild:  note: Using new build system- NOTE  | [iOS] xcodebuild:  note: Planning build- NOTE  | [iOS] xcodebuild:  note: Constructing build description- NOTE  | [iOS] xcodebuild:  warning: Skipping code signing because the target does not have an Info.plist file. (in target 'App')Analyzed 1 podspec.[!] The spec did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run: `echo "2.3" > .swift-version`.
lzz-Mac-mini:MYHexTool suning$ pod spec lint --allow-warnings-> MYHexTool (0.1.0)- WARN  | [iOS] license: Unable to find a license file- NOTE  | xcodebuild:  note: Using new build system- NOTE  | [iOS] xcodebuild:  note: Planning build- NOTE  | [iOS] xcodebuild:  note: Constructing build description- NOTE  | [iOS] xcodebuild:  warning: Skipping code signing because the target does not have an Info.plist file. (in target 'App')Analyzed 1 podspec.
  1. 出现的几个错误

执行 pod lib lint 时,报错:

  • ERROR | [iOS] unknown: Encountered an unknown error (Could not find a ios simulator (valid values: com.apple.coresimulator.simruntime.ios-10-3, com.apple.coresimulator.simruntime.ios-12-1, com.apple.coresimulator.simruntime.ios-8-1, com.apple.coresimulator.simruntime.tvos-12-1, com.apple.coresimulator.simruntime.watchos-5-1). Ensure that Xcode -> Window -> Devices has at least one ios simulator listed or otherwise add one.

解决办法: 升级CocoaPods sudo gem install cocoapods
再次执行 pod lib lint, 验证通过

  • WARN | [iOS] license: Unable to find a license file 原因:没有找到License文件,根据规则也可以直接把文本卸载podspec文件里

解决方案:文件里面加一句即可:
s.license = “Copyright © 2015年 Lisa. All rights reserved.”
或者看这个Unable to find a license file warning
s.license = { :type => “MIT”, :file => “LICENSE” }

  1. 最终编译成功:passed
  2. 发布cocoapod,使用cocoapod的trunk服务进行发布spec,在这之前需要注册自己的电脑才能使用该功能,这很简单,只要你指明你的邮箱地址(spec文件中的)和电脑名称即可。
$ pod trunk register 1522344335@qq.com 'lzz-Mac-mini'

然后邮件验证

  1. 如果注册成功会有log提示,然后就可以发布自己的podspec了
$ pod trunk push MYHexTool.podspec
  1. push podspec的过程比较慢,多等待一会,如果成功会出现下面的log
    我这一步:发生错误。我的cocoapods -1.2.0,可能是这个原因。在最新的1.7.4成功了。

  2. 验证用 pod search MYHexTool 搜索结果??????

感谢:https://www.jianshu.com/p/b3732d8b8837
http://www.pianshen.com/article/6172249680/。(这篇原理介绍的非常好)
框架 trunk push 到 CocoaPods 成功后 pod search 却搜不到的解决方法

iOS架构-cocoapods之公共库的发布与集成(16)相关推荐

  1. iOS架构-cocoapods打包静态库(依赖私有库、开源库、私有库又包含静态库)(14)

    前言: iOS工程架构少不了cocoapods 对第三方库的管理,它有着很好的操作性和集中管理的特性.之前的写了不少Xcode 建静态库工程打包.a 和 .framework 的文章,但是我们要先建静 ...

  2. iOS架构-cocoaPods之自制私有库及管理(17)

    CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便. 个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开 ...

  3. iOS架构-cocoapods之本地git库的管理(15)

    需求是:在工程中用cocoapods管理一个本地的一个抽离SDK库.和cocoapods管理远程的github的公开的库AFNetworking 一样管理自己的本地的一个库. 怎么实现:参看Cocoa ...

  4. iOS架构-C/C++lame库在Mac下编译通用静态库.a库(13)

    C/C++ 有很多成熟的库,还有很多特殊功能的库,有时候iOS 平台开发一些比较前沿或者冷门的功能时,iOS并没有提供解决方案,这时候就可以研究C/C++的一些库,为我们使用.但是在Xcode编译C/ ...

  5. iOS架构-制作属于自己的cocoapods以及podspec文件讲解(20)

    我们在 iOS架构-cocoaPods之自制私有库及管理(17) 中已经介绍了私有cocoapods库的制作.其中已经涉及podspec文件.这里单独拉出来介绍podspec文件.使大家对podspe ...

  6. iOS架构-静态库.framework手动打包及脚本化打包(5)

    引用一张博客的图片来理解下基本知识(http://www.cnblogs.com/oc-bowen/p/7478461.html) 我们可以看出.a的封装和.framework的封装差不多,也有模拟器 ...

  7. iOS架构-静态库.framework之依赖第三方库(7)

    需求分析:     把自己的能力封装成静态库提供给客户使用,但是有些工作市场上已经有很好的公开的代码,或者成本很低的解决方案,我们就可以使用别人公开的.或者低成本采购的技术来为我们服务.制作静态库也是 ...

  8. iOS架构-静态库.framework之资源文件打包bundle(6)

    iOS架构-静态库.framework手动打包及脚本化打包(5)中介绍了.framework的脚本化打包,虽然在iOS架构-静态库.a打包之资源文件打包成bundle(4)中已经演示过,其实是一样的. ...

  9. iOS架构-静态库.a的脚本化打包及使用(3)

    接着iOS架构-静态库.a的打包及使用(一)继续研究静态库.a的打包 需求背景: 手动编译静态库工程是会生成模拟器和真机两个不同的.a包 终端合成 $:lipo -create 真机.a路径 模拟器. ...

最新文章

  1. PNAS:多年多点5千样本鉴定玉米根际可遗传微生物
  2. CF662C-Binary Table【FWT】
  3. centos7配置Docker镜像加速器
  4. AGV (Automated guided vehicle)基础(二) - AGV的视觉算法 - RGB - D 算法
  5. wkwebview 不加载ajax,WKWebView加载显示问题
  6. shell 命令 netstat 查看端口占用
  7. mongoDB - 插入数据
  8. 阿里人告诉你毕业3年,为何技术能力相差越来越大?
  9. TOEFL资料 280多个
  10. 三角网格(Triangle Mesh)
  11. Java进阶(一) Java高效读取大文件,占内存少
  12. 关于博文的禁止评论和允许评论
  13. winedit 改字体大小
  14. 关于ASP木马提升权限
  15. shell之大小写转换
  16. CANoe隐藏属性——Multi CANoe
  17. C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax-Wendroff方法作为时间导数(附完整源码)
  18. 【SpringBoot】MultipartFile的transferTo()方法详解
  19. 2016年读书计划---人生第一个读书计划
  20. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

热门文章

  1. 组队练习赛(Regionals 2012, North America - East Central NA)
  2. Android源码解析(一)动画篇-- Animator属性动画系统
  3. 【IntelliJ IDEA】tomcat启动,打印日志乱码问题
  4. 腾讯云Ubuntu挂载硬盘空间
  5. i386平台和x86-64平台机器代码的区别
  6. 十字消源码分享(基于libgdx开发)
  7. 用牛顿迭代法求浮点数的平方根
  8. Spring中-IOC-Bean的初始化-循环依赖的解决
  9. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers
  10. 微信jssdk批量添加卡券接口(踩坑经验)