Pod 本地化 (一)

概述

一般来说,我们如果要在工程里面添加其他工程的代码,都是copy一份过来。手动copy比较麻烦,且容易出错,如果是.a库,还需配置路径等。遇到多个工程都需要的时候,更加浪费劳动力。下面介绍如何用 cocoapods 来管理代码,使用方法跟第三方pod的类似。

实践

  • 1、这里我们新建一个工程 YTToolPortal ,如下图。当然你也可以使用你已经存在的工程。

  • 2、新建类,比如我建立了 UIDevice+YTInfo 和 头文件 YTToolHeader 。添加 给类添加方法。这样我们暴露给外界的接口。

  • 3、在工程根目录下,新建 podspec 文件, 名为:YTToolPortal.podspec

可以通过命令 pod spec create YTTool,这样生成的spec文件各个条目都有,比较繁多,可以用文本编辑,选出自己所需要的填写。最终精简如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Pod::Spec.new do |s|

s.name = "YTToolPortal" # 文件名称
s.version = "0.0.1"
s.summary = "YTToolPortal 工具" #描述

s.homepage = "https://476139183.github.io"
s.license = { type: 'MIT', file: 'LICENSE' }

s.author = { "duanyutian" => "476139183@qq.com" }

s.platform = :ios, "8.0"
s.source = { :git => "https://github.com/476139183/YTToolPortal.git", :tag => s.version }
s.source_files = "YTToolPortal/YTToolPortal/*.{h,m}"
s.prefix_header_contents = '#import "YTToolHeader.h"'

s.requires_arc = true

end

s.version 是pod版本号。

s.source 是工程地址。可以是本地路径,svn,zip包,或者是 git上的代码。只是写法不一样。具体如下:

1
2
3
4
5
6
7
8
9
10
11
// 本地文件
s.source = { :git => '~/Desktop/YTToolPortal' }

// git
s.source = { :git => 'https://github.com/476139183/YTToolPortal.git' }

// zip
s.source = {:http=> 'http://xxx.zip', :tag => "1.0.0" }

// svn
s.source = {:svn=> 'http://path', :tag => "1.0.0" }

s.source_files 是暴露的源码。
s.requires_arc 表示arc工程。
s.dependency 表示所依赖的库。 如 s.dependency "JSONKit", "~> 1.4" 。 并指定了版本号
s.preserve_paths 表示需要保留的文件路径。
s.vendored_libraries 表示对外提供的.a。在打成.a库时有用。
s.prefix_header_contents 给外界提供的头文件

然后输入命令 pod lib lint 进行验证,验证通过后进行下一步。(如果报错,可以查看)

使用

在你的目标工程的 podfile 添加本地pod路径,如图,再执行 pod install 即可使用

报错信息

如果 pod lib lint xxxxx 报错

1
2
3
4
5
-> YTToolPortal (0.0.1)
- WARN | source: Git sources should specify a tag.

[!] YTToolPortal did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it) and All results apply only to public specs, but you can use `--private` to ignore them if linting the specification for a private pod..
You can use the `--no-clean` option to inspect any issue.

如图

由于我们现在还没有正式生成 release 版本, github 上并没有任何 tag,所以我们刚才填写 .podspec 文件填写 git 地址的时候没有填写指定 tag (上面文件的注释中有提到),解决方法我们可以先执行忽略警告的命令:

1
pod lib lint --allow-warnings

如果成功会出现如下输出:

1
2
3
4
-> YTToolPortal (0.0.1)
- WARN | source: Git sources should specify a tag.

YTToolPortal passed validation.

如图

当调试完成了之后,我们就已经可以在其他工程 引用 本地pod了, 比如 pod 'YTToolPortal', :path => '../YTToolPortal'

提交

创建私有的索引库 Spec Repo

1
pod repo add YTToolPortal https://github.com/476139183/YTToolPortal

提交

1
pod repo add YTToolPortal https://github.com/476139183/YTToolPortal

如果出错,如下

我们可以使用忽略警告

1
pod repo push YTToolPortal YTToolPortal.podspec --allow-warnings

制作 CocoaPods 依赖库

Cocoapods管理本地代码

使用cocoapods管理svn路径下库文件

使用Cocoapods创建私有podspec

CocoaPods创建自己的公开库、私有库

iOS-本地私有库和远程私有库.其实并不难