关于发布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版本太低,请更新即可。
最后
以上只是我遇到的一些问题,有所疏漏在所难免,希望大家帮我查缺补漏,谢谢。