Swift 上传cocoapods

0 在写下面的内容之前,本来想直接用swift3.0上传cocoapods,可是发现之前在swift2.3的时候上传没有问题的,在swift3.0都存在问题了,加上自己的项目也比较忙,就没有继续往下找原因,在此就把3.0以前踩过的坑和解决方案写在这里,希望能帮助更多的朋友,好了,不废话了,开始!

1 你要在github上新建仓库

屏幕快照 2016-12-02 08.36.26.png
  • 具体怎么建在这我不做详细介绍了,很简单,如果实在不会可以度娘或者简书,里面有许多,下面是我的目录结构
DCE17A9F-0725-4291-8297-762EF53DD5F7.png

2 然后把仓库克隆到本地,会看到下面的截图

git clone https://github.com/CoderST/STRowFollowLayout_SWIFT.git dao

屏幕快照 2016-12-02 08.39.23.png

3 然后输入下面的命令 STRowFollowLayout_Swift换成你自己的名称

pod spec create STRowFollowLayout_Swift

  • 这个时候你会在当前目录下多出一个文件
屏幕快照 2016-12-02 08.42.02.png

4 最好下载个Sublime程序(也可以是别的编辑器,可以百度自己找一下),专门用于编辑podspec(因为直接用系统的编辑器打开被坑过,(。・∀・)ノ゙)

屏幕快照 2016-12-02 08.43.24.png

5 用sublime编写下面的代码,注意要写清楚,不然会报错

s.name:名称,**pod search name** 的 name
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.homepage:项目的地址
s.license:开源许可
s.author:作者信息,表示格式为 { "[作者名]" => "[邮箱]" }
s.source:项目的git代码仓库的地址,如格式为:{:git => "[git代码仓库地址]", tag => "[版本号]"}
s.frameworks:表示需要的框架,如'Foundation',多个框架之间以英文逗号分隔。
s.source_files:别人通过你的pod引用文件的层级目录。如我要引用FGGDownloader文件夹下的.h和.m文件,则可以写成'FGGDownloader/*.{h,m}'
s.requires_arc: 是否支持ARC
s.dependency:依赖的项目,如有多个,则写多行#表示注释文
屏幕快照 2016-12-02 08.45.05.png
有时候验证会报一大堆错误,原因是 xcodebuild 编译时使用的 Swift 版本和你代码当前使用的版本可能不一样,
  • 这时候就需要指定一下 Swift 版本,指定方法是在 podspec 同目录下创建一个 .swift-version 的文件,在里面写上 Swift 版本即可,例如 4.0 ,
  • 或者 : 在终端输入以下命令也可以创建,创建完以后在执行 pod lib lint 就可以编译通过了。命令如下
    • echo "4.0" >> .swift-version

6 编写后记得git一下

git add .
git commit -m"改动的内容"
git push

7 给项目打tag

  • 在此之前确定一下自己的podspec文件里的版本最好和tag一样
git tag '0.0.1' 
git push --tags

8 此部非常重要,如果错误会报错误(经常会出现的错误-第八步骤,出现错误慢慢调),此处的STRowLayout.podspec改为你自己的podspec

pod spec lint STRowLayout.podspec --allow-warnings

Paste_Image.png
  • 看到上面的截图,恭喜你,说明你已经验证通过啦!!!
RowFayout git:(master) pod spec lint STRowLayout.podspec 
-> STRowLayout (1.0.0) 
- ERROR | file patterns: The `source_files` pattern did not match any file.
Analyzed 1 podspec.
[!] The spec did not pass validation, due to 1 error.
  • 如果出现的不是error都没有问题,像我下面出现的这个问题,就是当时问了省事,没有对上传的文件进行描述,所以就出现了一个⚠️

  • 如果出现下面的错误,是因为你没有创建一个工程,在当前git管理下创建一个工程即可

Failed to locate a valid instance of CoreSimulatorService in the bootstrap. Adding it now.

屏幕快照 2016-12-02 08.12.15.png
  • 但是我在此步骤的时候一直报一个错误,具体原因是为什么没有找到,找到了解决办法,截图如下
    echo 3.0 > .swift-version
屏幕快照 2016-12-02 08.14.37.png

还有一种原因是:执行pod lib lint XXX --verbose 查看具体原因,如果有 ** BUILD FAILED **字样,则是当前私有库文件编译时有语法错误或需要第三方类库,可执行
pod lib lint --quick 命令不让编译源文件。

9 如果上面一部通过,恭喜你💐 已经进行一大半了,下面就是 - 注册trunk(此处的邮箱和后面的名称都要改成你自己的,要和github上一致)

pod trunk register 694468528@qq.com 'CoderST'

等一下,你会在你注册的邮箱里收到一份邮件,点击链接验证一下OK就行了,然后在进行第10步操作

10 查看自己注册信息

pod trunk me

屏幕快照 2016-12-02 08.58.48.png

11 提交

pod trunk push STRowFollowLayout_Swift.podspec --allow-warnings

  • 此步骤需要一点耐心➕网络情况,有内心网络差你会看到下面情况
    [!] There was an error pushing a new version to trunk: getaddrinfo: nodename nor servname provided, or not known
    • 不要着急,这个不是你的配置文件或者命令不正确,都是你网速惹的祸,多试几个这个命令就应该能好
  • 看到下面的截图 恭喜你已经成功了
屏幕快照 2016-12-02 09.02.44.png

12 别慌恭喜和草泥马,以为成功了 在pod search STRowFollowLayout_Swift会报错

  • 如果报错是下面的 原因是不能重复提交,如果需要再次提交,需要重新打tag和编辑STCustomWidthLayout.podspec里的文件,把他们的tag都要统一.

[!] Unable to accept duplicate entry for: STCustomWidthLayout (0.0.1)`

屏幕快照 2016-12-02 09.04.24.png
  • 加上下面这个命令就好了
    rm ~/Library/Caches/CocoaPods/search_index.json

13 试一把 果然OK

屏幕快照 2016-12-02 09.06.14.png

14 晴天霹雳了,草,都已经pod上去了,但是在新建项目pod下来自己的框架后,在viewController中import自己的框架也是没有问题的 但是但是... 在初始化的时候尽然不行,错误提示❌cannot call value of non-function type

  • 解决 : 后来办法,漫天百度 谷歌,没有好到好的解决方案,于是就下载了SnapKit大神的框架,看看他们的方法与自己的有什么不同,后来我就在自己的类前面加上了public(swift2.3版本,3.0要加上open)
部分代码
代理部分
@objc public protocol STCustomWidthLayoutDelegate : class {
    // Variable height support
     func stLayoutWidthtForRowAtIndexPath(stLayout : STCustomWidthLayout, indexPath : NSIndexPath)->CGFloat
    // Height of Item
    @objc optional func heightForRowAtIndexPath(stLayout : STCustomWidthLayout)->CGFloat
    // Space of Colums
    @objc optional func layoutcolumnSpacingStLayout(stLayout : STCustomWidthLayout)->CGFloat
    // Space of Row
    @objc optional func layoutRowSpacingStLayout(stLayout : STCustomWidthLayout)->CGFloat
    // TOP DOWN LEFT RIGHT
    @objc optional func layoutEdgeInsetsStLayout(stLayout : STCustomWidthLayout)->UIEdgeInsets
}

public class STCustomWidthLayout: UICollectionViewFlowLayout {
    
    // MARK:- 变量
    
    /** 记录当前是第几行 */
    private var stCurrentRow : Int = 0
    /** 每一个item左边的的位置 */
    private var stItemLeft : CGFloat = 0
    /** 代理 */
    weak public var delegate : STCustomWidthLayoutDelegate?
    
    /** 边缘间距 */
    private var stEdgeInsets_c : UIEdgeInsets?{
        
        return delegate?.layoutEdgeInsetsStLayout?(self) ?? stEdgeInsets
    }
    /** item高度 */
    private var stItemHeight_c : CGFloat?{
        
        return delegate?.heightForRowAtIndexPath?(self) ?? stItemHeight
    }
    /** 列间距 */
    private var stColumSpacing_c : CGFloat?{
            return delegate?.layoutcolumnSpacingStLayout?(self) ?? stColumSpacing
    }
    /** 行间距 */
    private var stRowSpacing_c : CGFloat?{
        return delegate?.layoutRowSpacingStLayout?(self) ?? stRowSpacing
    }
    
    
    // MARK:- 懒加载
    /** atttibutesArray */
    private lazy var atttibutesArray : [UICollectionViewLayoutAttributes] = [UICollectionViewLayoutAttributes]()
    
}

尾随:上面的publish部分更具代码的实际情况酌情使用,可以参考大神们的框架模仿使用

15 下面在说说如何更新吧

  • 在推送podspec文件之前你需要确认以下几点:
    • 确保你的源码已经push到Github上
  • 一:
git add .
git commit -m "first commit for version 1.0.0"
git push origin master
  • 二 确保你所push的代码已经打上"version tag",也就是给源代码打上版本号标签
git tag '1.0.0'
git push --tags 
  • 最后验证可以按照上面的操作来进行

好了,就是这么多了,不知道有没有帮助到大家,如果有问题,欢迎留言~~

https://github.com/CoderST

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

推荐阅读更多精彩内容