姚翔的部落格

Making a CocoaPod

| Comments

最近想把自己正在做的iOS项目里的一个手势控制代码单独提出来以library的形式分享出去,本打算只是简单地在Github上建个public库然后把代码文件放上去,但作为一个“合格”的程序员,要时刻保持探索精神,所以打算做成时下流行的Cocopod公布出去。虽然要分享的代码作为一个pod还远不够格,但即使是菜鸟也应该为开源世界做点贡献,以下是随pod创建过程记录的一些notes,供大家参考。

首先给出官方指导链接Making a CocoaPod,我基本就是参考这篇文章来操作的。

  • 第一步就是新建目录结构pod lib create SYDemoPod1(我是采用完全从头开始创建的方法,所以对于如何把已经放在github上的文件变为pod的过程,这篇文章不会涵盖),执行完后pod就会自动在当前文件夹创建一个SYDemoPod的文件夹,里面会生成一些默认的文件和目录。

  • 下一步就是把我需要发布的文件放到Classes目录下,比方说是文件SYPod.h和SYPod.m,因为是从我的一个iOS项目里提出来的,暂时就只让它作为iOS的库好了,所以就把他们拷贝到Classes的ios目录下,同时修改.podspec文件,把里面的信息改成自己需要的(如果不知道怎么写,可以找个其他的pod照着写就行),这里有一个tip,在source file的配置项里,加上'Classes', 'Classes/**/*.{h,m}',这样就可以把Classes下面所有的文件加进去了,不然是会加根目录下的文件。

  • 接下来修改Example目里下的Podfile,配置pod依赖:

1
2
3
  platform :ios, '6.0'

  pod "SYDemoPod", :path => "../"

现在我们就可以创建一个Example项目到那个文件夹里面,作为给其他用户演示如何使用我的这个库的示例项目。用XCode新建完项目,然后命令行pod install2安装依赖,接着打开.workspace文件后你就可以coding你的示例代码了。

  • 把该写的代码都完成后,就万事俱备,只欠发布了。我们先来验证一下podspec文件,在Pod目录下运行pod lib lint命令,当验证没问题后,我们就可以把所有文件都提交并push到自己的github上去,接下来我们要实际测试一下这个pod是否有效。

    在本地新建一个项目,同时加一个Podfile,加上如下配置:

1
2
  # 这里的url就是对应你自己的pod的github链接
  pod 'SYDemoPod', :git => 'https://example.com/URL/to/repo/SYDemoPod.git'

配置好后运行pod installpod update,然后看看是否能正确添加依赖,如果没有任何问题,那就可以发布啦,依次使用以下命令即可:

1
2
3
  rake release

  pod trunk push SYDemoPod.podspec

另:如果执行pod trunk push命令时提示你要创建一个session,那就先pod trunk register先注册一下就可以了


  1. 我用的pod版本是0.29.0

  2. 笔者此时运行pod命令时,发现pod不是最新版本,所以升级到了0.32.1

Hello Blogging

| Comments

很久以来都没有认真写过技术博客,今天在学习Clojure的时候又用起了Vim,却突然发现好多以前熟知的操作因为疏于练习而忘记了,意识到平时记录些Notes的重要性,这才翻出了早先就配置好但一直荒废的Git Pages,写下这些文字。作为一个懒惰的人,我可能写完这篇便就半途而废了,但仍抱有对持久写作的一丝希望,作为开篇,就简单说明一下如何建立自己的github.io blog。

搭建的文档官方已经很完善了,这里就只给出链接,另外我用的是Octopress,所以文档是它家的,至于Markdown的话找了一篇简洁明了的:

这里再赘述一下创建一篇博文的简单流程,以作备忘用:

  1. 用下面的命令生成一篇新文章
    rake new_post["Create A Post With Given Title"]

  2. 书写完毕后,可以用以下命令预览
    rake preview or rake watch

  3. 确定要发布的时候就使用下面命令,它会将页面生成到source目录下同时push到master分支
    rake generate and rake deploy

  4. 最后别忘了把source分支的修改提交并push到git上
    git commit -m'msg' and git push origin source