CocoaPods(repo是master) 上传自己的项目
第一步:在GitHub上面创建一个要放置代码的repository。步骤如图:
创建repository创建完成后,会进入到如下界面:
repository创建完成
接下来就是在如上图的界面打tag,具体操作见图1~2
图1点击图一中的release,如果没有创建过tag的话,则会出现create new release
点击之后出现图二样式
- 图二1处填写的是git上的tag,这个要和后面的xxx.podspec的version 对应(网上有说要加v的,本篇教程下是不需要)
- 图二2处是这个tag的名称
- 图二3处是这个tag对应的描述
如果不想上github上面打tag的话,可以执行下面的语句
git tag '0.1.0'
git push --tags
这个时候就需要在本地把这个repository库clone下来,建议使用GitHub desktop软件操作。
下面介绍GitHub desktop软件的clone操作:
- 1、打开软件GitHub desktop,然后在左上角找到file选项
- 2、点击file选项,会弹出三个选项,选择第三个
- 3、在弹出的选择框里就是你的GitHub上面的库,找到对应的clone就可以了
第二步实现方式一 :
-
1、打开clone下来的文件夹(命名为A,后面的A文件夹说的就是这个文件夹)
-
2、打开终端,cd到A文件夹,然后终端输入:
git clone https://github.com/wode0weiyi/ConfigPublicPod.git
-
3、终端cd到ConfigPublicPod文件夹中,然后执行脚本./config.sh
cd ConfigPublicPod
./config.sh
(执行脚本后,会让你输入一系列参数,projectName要传到pod上的文件名,httpsRepo是步骤一中创建repository库的HTTPS地址,sshRepo就是repository库的ssh地址,homePage是repository库页面的地址栏地址)
脚本执行完成后,你的项目中就有了xxx.podspec文件了,这个就是pod的配置文件,后续要传到pod上面去识别你的项目的。
在xxx.podspec文件里面,你可以修改几个地方,一个就是支持版本:
s.platform = :ios, "8.0"
一个就是author用户:
s.author={"用户名" => "GitHub账号"}
s.version = "1.0.1"
这个根据自己要提交到git上的版本进行变更。这里会遇到比较多的问题。最后会把遇到的一些问题总结下。
这个时候,看文件目录:
image.png
针对第二步所说的步骤,下面介绍一个比较简单点,且目录清晰的步骤。
第二步实现方式二
- 1、cd到A目录下面,将你要上传的文件放到A目录下面。然后创建一个xxx.podspec文件夹。终端代码:
touch 传到pod上的文件名.podspec
然后用xcode打开xxx.podspec文件。将下面的代码复制到文件里面:
#
# Be sure to run `pod spec lint BLAPIManagers.podspec' to ensure this is a
# valid spec and to remove all comments including this before submitting the spec.
#
# To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
#
Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "WebRTCHelper"
s.version = "0.0.1"
s.summary = "WebRTCHelper."
s.description = <<-DESC
this is WebRTCHelper
DESC
s.homepage = "https://github.com/wode0weiyi/WebRTCHelper"
s.license = { :type => "MIT", :file => "FILE_LICENSE" }
s.author = { "huzhihui" => "wonderfulhzh@163.com" }
s.platform = :ios, "8.0"
s.source = { :git => "https://github.com/wode0weiyi/WebRTCHelper.git", :tag => s.version.to_s }
s.source_files = "WebRTCHelper/*.{h,m}"
s.requires_arc = true
end
对应的参数说明:
name:传入pod的文件说明
version:传入到pod上的版本,注意这里的版本一定要和git上面版本一致
summary:简单描述
description:详细描述
homepage:前面创建的repository的地址,地址栏里的地址就可
license:凭证,这个在创建repository的时候选择一下就行,见图创建repository
author:发布者的信息,前面一个为用户名,后面一个为GitHub的账号
platform:支持的版本
source:资源信息,第一个引号里面的是repository的HTTPS地址,后面是tag,不用动。
source_files:要传文件的目录
requires_arc :是否支持ARC
这里要重点注意的:
source_files
:这里要注意的是这里的路径是以xxx.podspec文件为根据,同级的话,就写文件名就好(一般要传pod的最外层文件夹和xxx.podspec文件是同级的)。往后多级的,逐级加。如果多个的话,就分组加,逗号隔开。下面针对各种情况给出范例:
- 1、同级的文件夹B里面只有.h和.m文件
source_files = "B/*.{h,m}"
- 2、多级文件夹B/C/D(只有最后一级文件夹里面有.h和.m文件
source_files = "B/C/D/*.{h,m}"
-3、多级文件夹B/C/D,每个文件夹里面都有.h和.m文件
source_files = "B/*.{h.m}","B/C/*.{h.m}","B/C/D/*.{h.m}"
其中C D可以用**代替
接下来就是验证xxx.podspec文件的正确性,终端cd 到xxx.podspec所在的文件夹,然后输入
pod psec lint 或者pod spec lint --allow-warnings
验证过程如果顺利的话,则会出现
podspec验证
这里验证会经常出现两个错误:
- 错误1:
file patterns: The ``source_files`` pattern did not match any file.
- 解决方法: 先按照上面说的目录层级检查自己的目录层级,如果无误,还出现这个错误,就需要手动去对应的文件夹添加想要放到pod上面的文件了。
(1)、打开
/Users/Library/Caches/CocoaPods/Pods/External/
你要传的项目文件
如图:
image.png
(2)、我现在要放到pod上面的是WebRTCHelper文件,则删除掉图中2处
的所有文件,然后在终端输入pod psec lint xxx.podsepc
,当然错误还是存在;
(3)、重新验证后这个时候发现图中2处
会生成一个文件夹,点开这个文件夹,在里面把你要放到pod上面的文件复制一份放到里面,(例如图中的标3
的文件夹)。然后再验证,这个错误就会没有了。当然具体问题还要具体讨论,这个是一个解决方法。
- 错误2:是git上打的版本和podspec文件里面的version不一致
- 解决方法:首先确认下自己在git上面有没有打包,可以通过在GitHub上查看,网页上打开你在GitHub上创建的
repository
,点击release
查看,如果打了tag的话,就会显示出来,如图:
image.png
将podspec
文件里面的version
改成自己看到图中的1.0.0就可以了。
注意事项
A文件夹里面代码和xxx.podspec文件验证成功后,需要将所有的改动传到GitHub上面去,避免后面出现错误。
这个操作可以在GitHub desktop软件上操作,步骤为:
- 1处如果A文件夹里面有数据或者文件修改,这里会展示出来,不需要操作
- 2处是对这次代码文件提交的一个说明,必填。填好后,点击2处下面的Commit to master 按钮
- 点击Commit to master 按钮后,完成后,点击3处的所在地方,然后等待就可以。
最后一步:验证成功后,接下来就是上传到pods。
在这之前,有一个好习惯就是验证下你现在要传到pod上面的文件名是否存在,比如我测试使用的是TestProject_2,验证方法很简单,就是pod搜索下看有没有即可
pod search TestProject_2
如果搜索到和你文件名一样的,这个时候你就要去改你的xxx.podspec
文件里面的name
属性了
终端输入:
pod trunk push xxx.podspec
然后等待结果就好,这个过程,网速不好的话会失败。出现:
pod失败成功后,看到终端输出如图:
pod成功
本篇说的pods公有库上传自己的项目的方式有点复杂,后面重新介绍了另外一种方式上传,相比起来,步骤少了很多,用起来也简单,且不容易出现source_files
报错问题。有兴趣的可以点击链接查看在CocoaPods公有库(repo是master)里面添加自己的项目
常见的错误请转到错误分析
这篇说的是将自己的项目开源道pods上面,如果要创建自己的私有库,利用pod怎么去管理呢?请看CocoaPods私有库管理,可以用于组件化,还会说到pod上传项目,文件层级怎么来划分。