Cocoapods新建pod教程

介绍

首先 庆祝我有了第一个Pod ^_^
名字叫 JZMultiChoicesCircleButton 是一个三维的多选择按钮
链接:CocoaControls / Github / Dribbble

安装

(以下所有介绍 有加粗的内容是需要替换为你自己的)

gem install cocoapods

我目前使用的是0.39.0版本 你可以通过执行

pod --version

查看你的版本

总览

1.写好你的库 划分好你需要打包哪些东西 图片素材 音频素材 等等
2.使用 pod lib 命令开启一个Pod模板 然后更新模板说明和版本号
3.修改模板内容
4.发布到Github以及其它地方

划分

比如说我现在写了一个叫做 JZMultiChoicesCircleButtonUIView 主要内容有:

JZMultiChoicesCircleButton.h
JZMultiChoicesCircleButton.m
CallbackWrong.png
CallbackSuccess.png

可以看到 这就是我需要打包在Pod里面的所有内容了 把他们的位置都记录好 等待马上迁移至Pod里面

创建模板

打开Terminal cd到一个你认为合适的位置 执行

pod lib create JZMultiChoicesCircleButton

(JZMultiChoicesCircleButton 请替换为你自己的Pod名称)
Terminal会询问以下几个事项:
编程语言:ObjC / Swift
是否包含Demo程序: 是 / 否
有没有用测试框架: 有 / 没有
Prefix是什么: 空 / 你的Prefix
填好以上内容 Cocoapods 会打开一个Xcode工程文件
(如果选择了“包含Demo程序” 新建Pod的工程文件时 会在JZMultiChoicesCircleButton本身的Target之外新建一个JZMultiChoicesCircleButton_Demo的Target 用于部署Demo)

修改模板

需要修改的有:
.podspec:描述Pod的内容
README:用于在Github上展示
LICENSE:默认MIT

从Xcode中查看这个路径下:

JZMultiChoicesCircleButton/Podspec Metadata/JZMultiChoicesCircleButton.podspec

进行修改**.podspec** 具体修改内容为

  s.name             = "JZMultiChoicesCircleButton"
  s.version          = "0.1.0"
  s.summary          = "Multi-choices button with 3D parallax effect."

name:Pod的名称
version:版本号
summary:一个简介

  s.homepage         = "https://github.com/JustinFincher/JZMultiChoicesCircleButton"
  s.license          = 'MIT'
  s.author           = { "Fincher Justin" => "zhtsu47@me.com" }
  s.source           = { :git => "https://github.com/JustinFincher/JZMultiChoicesCircleButton.git", :tag => s.version.to_s }
  s.social_media_url = 'http://fincher.im/'

homepage:Github项目地址 如果还没创立可以先去创建一个
license:许可证选择
author:姓名和邮箱
source:Github 附有版本号的tag的clone地址
social_media_url:默认推特地址

  s.platform     = :ios, '7.0'
  s.requires_arc = true

  s.source_files = 'Pod/Classes/**/*'
  s.resource_bundles = {
    'JZMultiChoicesCircleButton' => ['Pod/Assets/*.png']
  }

platform:最低运行系统版本
requires_arc:ARC或者MRC
source_files:文件目录内的源文件地址
resource_bundles:资源文件地址 在我这里是指 Assets文件夹里面所有的png文件 并且bundle名称和Pod同名

从Xcode中查看这个路径下:

JZMultiChoicesCircleButton/Podspec Metadata/README.md

写好你的介绍 用法 以及一些其他的东西

添加内容

从Xcode中查看这个路径下:

Pods/Development Pods/JZMultiChoicesCircleButton/Pod

里面有文件夹

Classes

里面有个叫ReplaceMe.m的文件 删除即可
新建一个文件夹在Pod层级,名字叫Assets好了...现在Pod里面有两个文件夹

Assets
Classes

把**.h.m**文件拖入Classes里面
把图片文件拖入Assets里面 不要用.xcassets.... 直接拖入@1x @2x @3x的png就好 如图:

好 这个时候 Pod本身就完工了

第一次Push

为什么现在就要Push?
原因是后面我们要添加Demo 而这个时候我们的Pod还没有发布到Github 没有办法进行git clone 也就没办法pod install 这个时候 我们的Demo是没办法导入头文件的
让我们先验证下我们的**.podspec**有没有写完整

pod lib lint JZMultiChoicesCircleButton.podspec

JZMultiChoicesCircleButton.podspec 替换为自己的podspec)
按照提示修改 直到没有问题 有个需要注意的是**.podspec**默认的社交网址是推特 这个在国内进行验证的话需要保证Terminal能够访问到 否则会出现验证错误
现在就可以Push了

git add .
git commit -m “Initial Commit"
git remote add origin https://github.com/JustinFincher/JZMultiChoicesCircleButton.git
git push -u origin master

(git remote add origin 替换为你自己的Github仓库地址)

添加Demo

如果在之前的Create命令中选择了创建Demo 那么就可以添加了
首先 需要进入demo文件目录执行 Pod install

> cd Example 
> pod install
Analyzing dependencies
Fetching podspec for `JZMultiChoicesCircleButton` from `../`
Downloading dependencies
Installing JZMultiChoicesCircleButton 0.1.0 (was 0.1.0)
Generating Pods project
Integrating client project

从Xcode中查看这个路径下:

JZMultiChoicesCircleButton/Example for JZMultiChoicesCircleButton

这就是你的Demo目录 现在可以导入头文件 写下你的示范代码了

需要注意的一点:

这个时候 如果你写的库中使用图片用的是[UIImage imageNamed:@"xxx"]的话 你有可能发现图片不会显示出来
需要修改你的库 将其中的

CallbackIcon.image = [UIImage imageNamed:@"xxx"]

修改为

    NSString *bundlePath = [[NSBundle bundleForClass:[JZMultiChoicesCircleButton class]]
                            pathForResource:@"JZMultiChoicesCircleButton" ofType:@"bundle"];
    NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];

    CallbackIcon.image = [UIImage imageNamed:@"xxx" inBundle:bundle compatibleWithTraitCollection:nil];

(修改JZMultiChoicesCircleButton 为你自己的Class和resource_bundles 名称)
也就是说 任何资源文件 无论xib png jpg 都要制定bundle为Pod的resource_bundles 有关resource_bundles具体在之前的podspec中设置

s.resource_bundles = {
    'JZMultiChoicesCircleButton' => ['Pod/Assets/*.png']
}

第二次Push

首先 全部推至Github
然后加个tag

> git tag 0.1.0
> git push origin 0.1.0
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/JustinFincher/JZMultiChoicesCircleButton.git
 * [new tag]         0.1.0 -> 0.1.0

验证是否一切完成

pod spec lint JZMultiChoicesCircleButton.podspec

出现

> pod spec lint JZMultiChoicesCircleButton.podspec 
 -> JZMultiChoicesCircleButton (0.1.0)
Analyzed 1 podspec.
JZMultiChoicesCircleButton.podspec passed validation.

注册一个Trunk的session

pod trunk register zhtsu47@me.com 'Justin Fincher' --description='Macbook Pro 13 2015'

推送至Cocoapods

pod trunk push JZMultiChoicesCircleButton.podspec

COOL!你现在有了一个自己的Pod~

接下来

参考

1.http://code.tutsplus.com/tutorials/creating-your-first-cocoapod--cms-24332
2.http://stackoverflow.com/questions/25817738/access-resources-in-pod
3.http://guides.cocoapods.org/making/getting-setup-with-trunk.html