关于发布github开源框架

iOS github 框架


当用CocoaPods管理iOS工程内部第三方开源框架时,不仅为开发带来了很大方便,而且也让组件化开发成为了一种不错的开发方式,即把所有组件以框架的方式交由CocoaPods管理,再统一集成进项目,不仅提高了开发效率,而且项目架构也十分清晰明了。
这里先说说使用CocoaPods发布开源框架的步骤,和一些出现的问题。

准备

首先,让自己的电脑具备在github上具备开发框架的能力,终端输入以下命令:

// 这里输入的邮箱是你注册**github**的邮箱,当然如果没有注册github就先注册一个
// 后面是开发者昵称,最好也跟注册**github**的名字是一样的,否则后面上传的时候找不到
pod trunk register 你的邮箱 "你的名字"

注册完成往后,会收到邮件,复制链接,打开后,会出现一个注册成功的图片,如果不成功,则重新检查注册即可。然后,终端输入以下命令:

pod trunk me

这一步终端就会打印你注册的信息。

创建远程代码仓库

然后,打开github,点击+,点击New repository,如下图,其中标记内容为必填:

创建仓库.png

如此,远程代码仓库创建完成,copy链接:

copy地址.png

并打开终端,在存放框架的目录下,输入以下命令:

git clone 链接

创建工程

然后打开Xcode创建新工程,在工程文件夹目录下创建与框架同名的的文件夹,用来存放框架源文件,与工程文件同级,并创建测试代码文件,OC就创建xx.h和xx.m,Swift就创建xx.swift即可。
返回上级目录,即工程目录同级,先提交代码仓库,命令如下:

git add .
git status
git commit -m "创建测试工程"
git push origin master
git tag "0.0.1"
git push --tags

生成spec文件,输入以下命令:

pod spec create https://工程地址(或者是框架名称)

配置spec文件

配置spec.png

用Xcode打开spec文件,配置spec文件比较容易出错,配置文件如下:

Pod::Spec.new do |s|
# 如果是开源框架的话,以下保留属性就足够了
  s.name         = "TCPageView"
  s.version      = "0.0.2"
  s.summary      = "一个功能不错的选项视图"
  s.homepage     = "https://github.com/TardisCXX/TCPageView"
  s.license      = "MIT"
  s.author             = { "TardisCXX" => "email@address.com" }
  s.platform     = :ios, "8.0"
# 这里的tag是远程仓库工程标签,可以直接修改,但应该和提交的标签一致,也可以不要"",直接写s.version
  s.source       = { :git => "https://github.com/TardisCXX/TCPageView.git", :tag => "#{s.version}" }
# 源文件路径,在本地话,就是源文件文件层次,下面是Swift框架,如果是OC就应该是s.source_files  = "TCPageView", "TCPageViewProject/TCPageView/*.{h,m}"
  s.source_files  = "TCPageView", "TCPageViewProject/TCPageView/*.swift"
  s.requires_arc = true
# 如果是Swift这一句要加上,如果是OC这一句就不需要了,当然如果还有使用的库,就用s.frameworks = "", "",...
  s.framework  = "UIKit"
# 如果有依赖库的话,还得加上s.dependency "JSONKit"
end

command + s保存,然后验证spec文件,命令如下:

pod spec lint 或者 pod lib lint

如果验证成功,则执行下面命令:

pod trunk push

可能出现的问题1

如果提交成功,,然后执行命令:

pod search 框架名

如果搜索到,那么恭喜你,你可以开发框架了,如果没搜索到,那么如下:

pod setup

如果还不能search到,那么找到以下路径:

~/Library/Caches/CocoaPods 

然后删除目录下的search_index.json文件,然后继续输入命令:

pod search 框架名

可能出现的问题2

在生成spec文件的时候,会出现以下一个问题:

[!] Unable to fetch data for `TardisCXX/TCNewFeatureView`

重新删除创建的工程,然后推送到远程仓库,再生成spec文件

可能出现的问题3

1. 验证spec文件的时候,出现一个问题:

- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.

解决办法,那么就输入:

pod spec lint --verbose

2. 验证spec文件的时候,出现一个问题2:

- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.

解决办法,那么就输入:

pod spec lint --no-clean

如果还是解决不了,不防输入:

echo "3.0" > .swift-version

3. 验证spec文件的时候,出现一个问题3:

- ERROR | license: Sample license type.

解决办法,删除license属性的(example)

4. 验证spec文件的时候,出现一个问题4:

- WARN  | source: Git sources should specify a tag.

解决办法,有一个没有打标签的错误,这个只是一个警告,如果没有打标签,就先打个标签

5. 验证spec文件的时候,出现一个问题5:

[!] 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`:

解决办法,直接运行:

echo "2.3" > .swift-version

6. 验证spec文件的时候,出现一个问题6:

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

解决办法,重新检查下s.source_files源文件目录层次,修改后再次运行,如果还是报错,那么 open 或者 手动打开 以下路径:

/Users/电脑名/Library/Caches/CocoaPods/Pods/External/5f222008c0986b8da6c0672944111053-3cfc4

一直到最后文件夹中,就会看到没有源文件,那么我们手动创建,即把已经创建好的源文件按照spec文件配置层次,拖进去即可,当然不需要工程文件!!!然后再次验证:

pod spec lint

就会成功,如果还不成功,重新打标签,或者删除工程文件、删除spec文件,重新来过!!!
当验证成功后,需要把spec推送到github,执行以下命令:

pod trunk push

当然还有一些问题,就是你的ruby版本太低,请更新即可。

最后

以上只是我遇到的一些问题,有所疏漏在所难免,希望大家帮我查缺补漏,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 目前比较流行的组件化开发,针对多个 app 要用同一套代码,将其做成 pod 仓库是比较好的解决方案。代码只有一份...
    ripperhe阅读 5,395评论 8 39
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,409评论 25 707
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,729评论 6 342
  • Ariel的世界阅读 126评论 0 0