iOS Developer

关于发布github开源框架

2017-05-11  本文已影响32人  村长大人tardis_cxx

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版本太低,请更新即可。

最后

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

上一篇下一篇

猜你喜欢

热点阅读