将代码提交到CocoaPods超详细的操作步骤和图解

本文详细介绍如何通过CocoaPods发布iOS开源组件的过程,包括提交代码到GitHub、更新CocoaPods版本、新建并验证.podspec文件、创建新工程进行测试以及更新版本等内容。

操作步骤:
一:提交代码到GitHub并打Tag
二:更新CocoaPods版本
三:新建.podspec文件并进行验证,然后提交.podspec文件到trunk中
四:搜索工程并创建新工程进行测试
五:更新版本,重新上传新版本


一:提交代码到GitHub并打Tag

1、注册GitHub账号并登录
2、右上方点击+,新建仓库(仓库名字(Repository name)、仓库权限(Public)、readme、license)
这里写图片描述

这里写图片描述

创建完成如下图:
这里写图片描述

3、检出仓库
1、打开Xcode,选择 Xcode—>Preferences偏好设置—->Account —> Add Repository,输入仓库的地址Address和GitHub的用户名和密码
这里写图片描述

这里写图片描述

仓库添加完成后如下图:
这里写图片描述

2、 创建完成,需要将仓库检出到本地,Source Control —> Check Out…
这里写图片描述

找个位置保存起来
这里写图片描述

这里写图片描述

3、将写好开源框架/库的Demo或者Example放到git仓库下,还要将要开源的文件夹也放入到git仓库中(该文件夹在后面会被用到)

这里写图片描述

4、 切换到git仓库目录,并提交该工程(.podspec, LICENSE 这两个文件必须提交到git上)

cd /Users/macmini/Documents/XXImageLoopView
git add -A
git commit -m “first commit for version 1.0.0”
git push origin master

提交之后刷新github可以看到提交的文件:
这里写图片描述

5、 打tag(这一步不能少,后面.podspec文件会用到该版本号)

git tag ‘1.0.0’
git push –tags


如果在操作过程中想删除tag,可以使用如下命令(删除tag不属于整个过程的步骤,这里只是提供删除tag的命令,在需要的使用可以查看):

git tag // 查看tag
git tag -d 1.0.0 //删除一个指定的tag
git push origin :refs/tags/1.0.0 // push到远程tag

二:更新CocoaPods版本


  1. 查看cocoapods的版本号

    pod - -version

  2. 确保cocoapods的版本号大于0.33,如果不大于需要先更新版本(无论版本号多大最好都更新一下)

    sudo gem install cocoapods

  3. 注册Trunk账户(邮箱地址建议写成github注册的邮箱,用户名写成github对应的用户名)

    pod trunk register 邮箱地址 ‘用户名’ –verbose

  4. 注册命令执行完之后,对应的邮箱地址会收到一封邮件,“请确认您的注册CocoaPods通过点击以下链接:”,打开链接地址完成验证,如果地址不能点击就直接粘贴URL到浏览器上执行
    这里写图片描述

这里写图片描述

  1. 查看自己的注册信息

    pod trunk me


这里写图片描述

三:新建.podspec文件,并提交.podspec文件到trunk中


创建.podspec文件

.podspec文件的作用是为了让CocoaPods搜索引擎知道该代码的作者、版本号、概要、描述、源代码地址、部署版本、依赖的框架等描述信息。 .podspec文件可以自动生成,但是因生成会生成很多没有用的信息,所以建议在github上找一个.podspec文件修改一下参数即可。

pod spec create XXImageLoopView // 生成XXImageLoopView.podspec文件

注意:将代码提交到CocoaPods最容易出错的地方就是该.podspec文件,有可能多一个键或者少一个键、写错一个值都有可能在提交时出错,这里给出一份我的库中的,建议将我的.podspec文件拷贝一份,然后修改每个键对应的值,一般.podspec文件名和仓库的名字一致
Pod::Spec.new do |s|
  s.name         = "XXImageLoopView"
  s.version      = "1.0.0"
  s.summary      = "A fast integration images loop function of custom control"
  s.description  = "A fast integration images loop function of custom control addtion with cocoapod support."
  s.homepage     = "https://github.com/mengday/XXImageLoopView"
  s.social_media_url   = "http://www.weibo.com/u/5267312788"
  s.license= { :type => "MIT", :file => "LICENSE" }
  s.author       = { "menday" => "mengd6@126.com" }
  s.source       = { :git => "https://github.com/mengday/XXImageLoopView.git", :tag => s.version }
  s.source_files = "XXImageLoopView/*.{h,m}"
  s.ios.deployment_target = '6.0'
  s.frameworks   = 'UIKit'
  s.requires_arc = true

end
s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错 s.version:版本号 s.ios.deployment_target:支持的pod最低版本 s.summary: 简介 s.homepage:项目主页地址 s.license:许可证 s.author:作者 s.social_media_url:社交网址,这里我写的微博默认是Twitter,如果你写Twitter的话,你的podspec发布成功后会@你 s.source:项目的地址 s.source_files:需要包含的源文件 s.resources: 资源文件 s.requires_arc: 是否支持ARC s.dependency:依赖库,不能依赖未发布的库,如 s.dependency = ‘AFNetworking’ s.dependency:依赖库,如有多个可以这样写 source_files:写法及含义建议大家写第一种或者第二种
"XXImageLoopView/*
""XXImageLoopView/XXImageLoopView/*.{h,m}"
"XXImageLoopView/**/*.h"
  • “*” 表示匹配所有文件
  • “*.{h,m}” 表示匹配所有以.h和.m结尾的文件
  • “**” 表示匹配所有子目录
s.source 常见写法
s.source = { :git => "https://github.com/coderYJ/YJSettingTableView.git", :commit => "68defea" }
s.source = { :git => "https://github.com/coderYJ/YJSettingTableView.git", :tag => 1.0.0 }
s.source = { :git => "https://github.com/coderYJ/YJSettingTableView.git", :tag => s.version }
commit => “68defea” 表示将这个Pod版本与Git仓库中某个commit绑定 tag => 1.0.0 表示将这个Pod版本与Git仓库中某个版本的comit绑定 tag => s.version 表示将这个Pod版本与Git仓库中相同版本的comit绑定

2. 提交之前先验证.podspec文件是否合法

pod spec lint XXImageLoopView.podspec

若果校验失败报下面错误,执行执行一下echo “2.3” >.swift-version命令, 如果是其他错误可能是.podspec文件配置有问题

echo “2.3” >.swift-version

![这里写图片描述](https://img-blog.youkuaiyun.com/20170118145217543?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJpcmRiZXN0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 出错率最多的是这个错误,错误原因可能是.podspec文件中的s.source_files的值配置的不对 ![这里写图片描述](https://img-blog.youkuaiyun.com/20170118162806566?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJpcmRiZXN0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 如若验证成功如下图 ![这里写图片描述](https://img-blog.youkuaiyun.com/20170118150831356?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJpcmRiZXN0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

3. 提交.podspec文件到trunk中

pod trunk push XXImageLoopView.podspec

只要验证通过,提交时一般没有什么问题, 一般会卡在“Updating spec repo ‘master’”, 这时不要关闭终端,要等,根据网络不同提交时可能要花几分钟时间,甚至是10分钟都有可能,成功如下图:
这里写图片描述

4. 查找提交成功的库

pod search XXImageLoopView

如果查不到会报错如下: ![这里写图片描述](https://img-blog.youkuaiyun.com/20170118151553954?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJpcmRiZXN0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 解决方案: 先删除search_index.json文件,然后再search (文件不存在时会自动下载,根据不同的网络可能要花一会时间,要等)

rm ~/Library/Caches/CocoaPods/search_index.json
pod search XXImageLoopView

![这里写图片描述](https://img-blog.youkuaiyun.com/20170118152026643?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJpcmRiZXN0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

5. 创建工程测试

  1. 创建XXImageLoopViewTest工程,并新建Podfile文件
    这里写图片描述

  2. 切换当前目录并安装

    cd /Users/macmini/Documents/Test/XXImageLoopViewTest/
    pod install –verbose –no-repo-update

这里写图片描述
3. 关闭Xcode,重新打开XXImageLoopViewTest.xcworkspace
这里写图片描述

  1. 导入头文件测试
#import "ViewController.h"

#import <XXImageLoopView.h>

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray *images = [NSMutableArray arrayWithCapacity:4];
    for (NSInteger i = 0; i < 4; i++) {
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", i+1]];
        [images addObject:image];
    }

    ActionBlock block = ^(NSInteger index){
        NSLog(@"点击了第张%ld图片", index);
    };

    XXImageLoopView *imageLoopView = [[XXImageLoopView alloc] init];
    imageLoopView.frame = CGRectMake(0, 0, self.view.frame.size.width, 150);
    imageLoopView.images = images;
    imageLoopView.pageControl.pageIndicatorTintColor = [UIColor greenColor];
    imageLoopView.pageControl.hidden = NO;
    imageLoopView.interval = 3.0;
    imageLoopView.actionBlock = block;
    imageLoopView.alignment = XXPageControlAlignmentBottomCenter;
    imageLoopView.leftOrRightMargin = 60;
    imageLoopView.bottomMargin = 15;
    [self.view addSubview:imageLoopView];
}

@end

五:更新版本,重新上传新版本


假如github上的程序版本1.0.0有bug,需要修复,修复好代码以后,

  1. 首先要提交代码(XXImageLoopViewDemo)到git仓库中(注意除了提交Demo程序,还要提交要开源的文件夹,如本示例中的XXImageLoopView文件夹)

    git add -A
    git commit -m “fixed bug”
    git push origin master

  2. 给项目打一个新的tag

    git tag ‘1.0.1’
    git push - -tags

  3. 修改.podspec文件中的version字段

    s.version = “1.0.1”

  4. 提交.podspec文件到trunk中即可

    pod trunk push XXImageLoopView.podspec

  5. 修改测试工程的Podfile文件
    pod ‘XXImageLoopView’, ‘~>1.0.1’

  6. 重新安装第三方库,并查看安装下来的是否是想要的版本
    pod install - -verbose - -no-repo-update


自定义图片轮播视图控件:欢迎Star https://github.com/mengday/XXImageLoopView

相关文章:

http://www.jianshu.com/p/8a7b9232cbab
http://www.cnblogs.com/wengzilin/p/4742530.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风流 少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值