iOS 一行命令发布 Pod 框架
前言
目前比较流行的组件化开发,针对多个 app 要用同一套代码,将其做成 pod 仓库是比较好的解决方案。代码只有一份放在组件仓库,需要集成的 app 只需要将其 pod 到工程内部即可。
如果很多组件都需要做成 pod 库,每一步都手动去做,显得繁琐而且容易出错。本文主要讲一下,怎么自动化去实现这些事情。不过,在此之前,先概述一下,发布框架具体需要做哪些事情。如果对发 pod 的流程比较熟悉,直接跳过看自动化实现部分。
先上 GitHub 仓库地址:
- fastlane-files → 快车道文件
- pod-template → ruby 脚本及模板文件
发布框架到官方库
注:图中标号并非和发布流程标号对应,图中表述的是从框架发布到使用的大致流程。
想要发布框架到 CocoaPods 官方库,需要有以下流程:
- 安装 CocoaPods]
- 注册 CocoaPods 账号]
- 创建 spec 文件]
- 提交代码并为框架打 tag
- 验证 spec 文件
- 通过 pod trunk push 推送 spec 文件
安装 CocoaPods
网上有很多教程,这里不再赘述。需要注意的是,RubyGems
的 淘宝镜像 已经不再维护,已迁移至 Ruby China,安装 CocoaPods 前记得替换 gem sources
。
注册 CocoaPods 账号
首先需要注册一个 CocoaPods 账号,用于发布 pod 仓库。
$ pod trunk register EMAIL [NAME]
trunk
命令用于创建一个账号或是一个 seession。
- 如果你还没有账号,则需要将邮箱和名字一起填入,创建账号的同时会自动创建 session
- 如果已经有了账号,但是没有在当前这台电脑上发布过 pod 仓库,这个时候就需要创建一个 session,仅需要填邮箱即可,除非你想改名字,否则不用填写名字。
你可以对你的 session 进行描述,这样在利用 pod trunk me
命令查看所有 session 信息的时候,可以很清晰地看到在哪些电脑上创建过 session。
$ pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'
命令成功之后,你的邮箱应该会收到一份邮件。查看邮件信息,访问对应网址即可验证你的账号。当然,这个事情做一次就好了,以后基本上不用再操作。
创建 spec 文件
spec 文件即一个 pod 仓库的描述信息。所有通过 pod search
搜索出来的框架,都是根据这个文件中的描述信息进行匹配的。以下为部分描述信息:
- 仓库名字
- 作者
- 证书
- 版本
- 描述
- 代码源路径
- 使用哪些文件
- 依赖哪些其他框架
- ...
一个简单的 spec 文件如下:
Pod::Spec.new do |s|s.name = 'ZYTemplateName's.version = '0.1.0's.summary = 'A short description of ZYTemplateName.'s.homepage = 'https://github.com/ripperhe/ZYTemplateName's.license = { :type => 'MIT', :file => 'LICENSE' }s.author = { 'ripperhe' => 'ripperhe@qq.com' }s.source = { :git => 'https://github.com/ripperhe/ZYTemplateName.git', :tag => s.version.to_s }s.ios.deployment_target = '8.0's.source_files = 'ZYTemplateName/Classes/**/*'
end
先进入需要发布的框架的根目录,执行
$ pod spec create [NAME]
这里的 NAME
即为框架名字,不需要手动加 .podspec
后缀。执行完成之后,会生成 ZYTemplateName.podspec
文件(这里以 ZYTemplateName
为例),进入该文件,将对应信息改为你具体的信息即可。
如果你发现你的 spec 文件默认填写的用户名和邮箱不是你刚才利用 trunk 命令注册账号时候填写的不用惊讶,因为默认取的是 git 的用户名和邮箱,所以想修改的话,去修改 ~/.gitconfig
文件中的用户名和邮箱。以下为相关源码:
def default_data_for_template(name)data = {}data[:name] = namedata[:version] = '0.0.1'data[:summary] = "A short description of #{name}."data[:homepage] = "http://EXAMPLE/#{name}"data[:author_name] = `git config --get user.name`.stripdata[:author_email] = `git config --get user.email`.stripdata[:source_url] = "http://EXAMPLE/#{name}.git"data[:ref_type] = ':tag'data[:ref] = '#{s.version}'data
end
spec 文件的这些描述,基本上看命名是可以看明白的。实在不明白可以查看 官方文档。需要注意的是,s.version
是你将要发布的 pod 仓库的版本,s.source
是你的仓库源地址和对应的 tag
信息。
version
和 tag
可以是不同的,但是为了方便管理和维护,我们一般将其设置为一样的,所以 tag
可以 直接使用 s.version.to_s
。既然这里用到了 tag
,那么接下来,就需要为仓库代码打上 tag
。
提交代码并为框架打 tag
首先,需要将本仓库的所有修改提交到远程仓库。
$ git add .
$ git ci -m 'release pod'
$ git push
上一步在仓库的根目录创建了 spec 文件,随着代码的提交,spec 文件也会提交到自己的远程代码仓库。这个 spec 文件和需要发布的框架放在一起并不是必须,只是这样可以方便我们以后维护这个框架。
发布 pod 仓库,需要和自己框架的远程仓库代码版本对应,所以这里需要为当前代码打上 tag,这个 tag 是和前面的 spec 文件中填写的 tag 对应的。框架发布成功之后,CocoaPods 会根据 tag 信息去获取相应代码。
$ git push origin master
$ git tag '0.1.0'
$ git push --tags
验证 spec 文件
用于验证 spec 文件是否正确,可以及早发现问题。同样,也是在需要发布的框架的根目录,执行
$ pod spec lint ZYTemplateName.podspec
这里需要加上 .podspec
后缀来验证这个文件。如果有报错,仔细查看报错信息,一般可以定位问题,可以加上 --verbose
查看详细的验证过程,方便定位问题。
$ pod spec lint ZYTemplateName.podspec --verbose
验证 spec 文件也可以用另外一个命令
$ pod lib lint ZYTemplateName.podspec
pod spec lint
和 pod lib lint
最主要的区别是,前者会根据 spec 文件 tag 信息去验证远程仓库代码是否存在,后者不会。简单理解就是,pod spec lint
联网检查,pod lib lint
不联网检查。
验证的时候,可能会报错,或是报警告。报错的话,必须解决,详细看具体信息,一般能找到问题,如果不能,自行 google
iOS 一行命令发布 Pod 框架相关推荐
- iOS好用的第三方框架/插件
一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github. ...
- 发布开源框架到CocoaPods入坑指南
个人原文博客地址: 发布开源框架到CocoaPods入坑指南 在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了 可 ...
- 【iOS开发】从Cocoa框架说开去--Fundation框架系列
[Cocoa简介] Cocoa是苹果公司为Mac OS X所创建的原生面向对象API 是Mac OS X上五大API之一.(其他四个:Carbon POSIX X11 Java)它是苹果的面向对象开发 ...
- 一行命令装下所有「炼丹」工具及依赖项,就靠这个免费软件源了|教程
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 相信不少 ...
- erwin模型怎么保存_一行命令启动,十分钟内完成部署,Paddle Serving开放模型即服务功能...
机器之心发布 机器之心编辑部 百度飞桨的 Paddle Serving 能够实现服务器端快速部署,最近,随着飞桨更新到 1.7 版本,Paddle Serving 也有了新变化.更新后的 Paddle ...
- iOS比较常用的第三方框架
[转]http://www.cnblogs.com/wujy/p/4747998.html 把平时看到或项目用到的一些插件进行整理,文章后面分享一些不错的实例,若你有其它的插件欢迎分享,不断的进行更新 ...
- 蒲公英使用一行命令上传Apk文件
在安卓开发中,为了给测试人员提供测试包,我们经历了从U盘拷贝.发邮件或者QQ.微信等通讯工具发送测试Apk文件,不像IOS一样有AppleStore的测试模式.安卓就只能自己来想办法给测试组提供测试包 ...
- iOS开发 常用第三方开源框架
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报 开源框架 图像: 1.图片浏览控件MWPhotoBrowse ...
- 自己动手设计一款iOS自动构建发布工具
2019独角兽企业重金招聘Python工程师标准>>> 自己动手设计一款iOS自动构建发布工具 一.引言 在iOS开发中,你可能经常会遇到这样的场景: 自己负责的功能模块开发完成后, ...
最新文章
- 敏捷团队如何通过Leangoo领歌做迭代管理、迭代规划及任务协同
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
- 002_JavaScript的历史
- Python Mysql_db对数据查询进行处理
- stm32 hal 串口只可以接收到一包数据数据
- Java异常与异常处理简单使用
- Android【报错】This class should be public (android.support.v7.internal.widget.ActionBarView.HomeView)
- Axure RP安装破解汉化以及发布到至AxureShare
- Github 汉化插件教程
- C语言中字符串的结束标志是什么
- 如何使用 google 搜索
- R中设置图形参数--函数par()详解
- 会议记录管理系统(6) - 查找会议记录模块设计
- centos 5.2自动安装的php不支持mysql?
- 墨干V1.1.0: 新一代结构化编辑器的雏形
- 【shaderforge学习笔记】 Parallax节点(视差节点)
- 什么事MVC?什么是MVC!
- 请帮小明同学设计一个程序,输入上次考试成绩(int)和本次考试成绩(int),然后输出成绩提高百分比,保留2位小数。
- 图论500题 慢慢写
- MapReduce作业在Hadoop完全分布式集群上运行的问题与思考(持续更新)