Skip to content

Commit 8e265be

Browse files
committed
feat: add cocoapods.md cheatsheet.
1 parent e1639d0 commit 8e265be

File tree

3 files changed

+265
-0
lines changed

3 files changed

+265
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ Quick Reference
109109
[Ansible](./docs/ansible.md)<!--rehype:style=background: rgb(238 0 0/var(\-\-bg\-opacity));&class=contributing tag&data-lang=RedHad&data-info=👆看看还缺点儿什么?-->
110110
[Awk](./docs/awk.md)<!--rehype:style=background: rgb(16 185 129/var(\-\-bg\-opacity));-->
111111
[Conan](./docs/conan.md)<!--rehype:style=background: rgb(0 193 9/var(\-\-bg\-opacity));&class=tag&data-lang=C/C++-->
112+
[CocoaPods](./docs/cocoapods.md)<!--rehype:style=background: rgb(0 193 9/var(\-\-bg\-opacity));&class=tag&data-lang=C/C++-->
112113
[Cargo](./docs/cargo.md)<!--rehype:style=background: rgb(71 71 71/var(\-\-bg\-opacity));&class=tag&data-lang=Rust-->
113114
[Curl](./docs/curl.md)<!--rehype:style=background: rgb(16 185 129/var(\-\-bg\-opacity));-->
114115
[Chmod](./docs/chmod.md)<!--rehype:style=background: rgb(16 185 129/var(\-\-bg\-opacity));-->

docs/cocoapods.md

+261
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
CocoaPods 备忘清单
2+
===
3+
4+
[CocoaPods](https://en.wikipedia.org/wiki/Cron)[Swift](./swift.md) 和 Objective-C Cocoa 项目的依赖管理器,此快速参考备忘单显示了它的常用命令使用清单。
5+
6+
入门
7+
---
8+
9+
### 安装
10+
<!--rehype:wrap-class=row-span-2-->
11+
12+
```bash
13+
$ sudo gem install cocoapods
14+
```
15+
16+
无 Sudo 安装,不想为此过程授予 `RubyGems` 管理员权限
17+
18+
```bash
19+
export GEM_HOME=$HOME/.gem
20+
export PATH=$GEM_HOME/bin:$PATH
21+
```
22+
23+
编辑 `.bash_profile` 配置文件,添加上面内容
24+
25+
```bash
26+
$ gem install cocoapods --user-install
27+
$ gem which cocoapods
28+
/Users/wcj/.gem/ruby/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods.rb
29+
$ /Users/wcj/.gem/ruby/2.0.0/bin/pod install
30+
```
31+
<!--rehype:className=wrap-text-->
32+
33+
### 更新 CocoaPods
34+
35+
```bash
36+
$ gem install cocoapods
37+
```
38+
39+
或者对于预发布版本
40+
41+
```bash
42+
$ gem install cocoapods --pre
43+
```
44+
45+
### 安装
46+
<!--rehype:wrap-class=row-span-2-->
47+
48+
```bash
49+
$ pod install
50+
```
51+
52+
在您的项目中安装新的 `pod`,即使你已经有一个 `Podfile` 并且之前运行过 `pod install`; 因此,即使您只是在已经使用 `CocoaPods` 的项目中添加/删除 `pod`
53+
54+
- 会在 `Podfile.lock` 文件中为每个 pod 写入已安装的版本,此文件跟踪每个 pod 的已安装版本并锁定这些版本
55+
- 它只会解析 `Podfile.lock` 中尚未列出的 pod 的依赖关系
56+
- 对于 `Podfile.lock` 中列出的 pod,会下载 `Podfile.lock` 中列出的显式版本,而不尝试检查是否有更新的版本可用
57+
58+
下载 `Podfile` 中定义的所有依赖项,并在 `./Pods` 中创建一个 `Xcode Pods` 库项目
59+
60+
### 更新过时的依赖
61+
62+
```bash
63+
$ pod outdated
64+
```
65+
66+
显示当前 `Podfile.lock` 中过时的 `pod`,但仅显示来自规范 `repos` 的那些,而不是来自本地/外部来源的那些
67+
68+
### 更新依赖
69+
70+
```bash
71+
$ pod update
72+
$ pod update PODNAME
73+
```
74+
75+
更新由指定 `pod` 名称标识的 `Pod`。 如果没有指定 `Pod` 名称,它会更新所有 `Pod`,而忽略 `Podfile.lock` 的内容。 此命令保留用于更新依赖项,应使用 `pod install` 安装对 `Podfile` 的更改
76+
77+
### 清理 Pods 依赖
78+
79+
```bash
80+
$ pod deintegrate
81+
```
82+
83+
`CocoaPods` 中分离您的项目。 从您的 `Xcode` 项目中删除所有 `CocoaPods` 的痕迹。如果未指定 `xcodeproj`,则将在当前目录中搜索 `Xcode` 项目
84+
85+
### pod env
86+
87+
```bash
88+
$ pod env
89+
```
90+
91+
显示 pod 环境
92+
93+
### 将 Pod 添加到 Xcode 项目
94+
95+
- 创建一个 Podfile,并添加您的依赖项
96+
97+
```ruby
98+
# Podfile
99+
target 'MyApp' do
100+
pod 'AFNetworking', '~> 3.0'
101+
pod 'FBSDKCoreKit', '~> 4.9'
102+
end
103+
```
104+
105+
- 在您的项目目录中运行 `$ pod install`
106+
- 打开 `App.xcworkspace` 并构建
107+
<!--rehype:className=style-timeline-->
108+
109+
### 创建一个新的 Cocoapod
110+
111+
命令 | 说明
112+
:-- | --
113+
`pod lib create pod_name` | 为您创建一个新的 pod 项目
114+
`pod trunk push pod_name.podspec` | 将 podspec 推送到 trunk
115+
`pod spec create pod_name` | 为您创建 podspec 模板
116+
<!--rehype:className=style-list-->
117+
118+
### 浏览
119+
120+
- `pod search QUERY` 搜索名称、摘要、描述或作者与 QUERY 匹配的 pod,忽略大小写。 如果指定了 --simple 选项,这将只搜索 pod 的名称
121+
- `pod list` 列出所有可用的 pod
122+
- `pod try NAME|URL` 下载具有给定名称(或 Git URL)的 Pod,如果需要,安装其依赖项并打开其演示项目。 如果提供了 Git URL,则使用 repo 的头部。 如果指定了 Git URL,则可以提供 --podspec_name,如果 podspec 名称由于某种原因与 git 存储库不同
123+
124+
### 规格
125+
<!--rehype:wrap-class=col-span-2-->
126+
127+
- `pod spec create [NAME\|https://github.com/USER/REPO]` 在当前工作目录中创建一个名为 NAME.podspec 的 PodSpec。如果传递了 GitHub url,则预先填充规范。
128+
- `pod spec lint [NAME.podspec|DIRECTORY|http://PATH/NAME.podspec ...]` 验证 NAME.podspec。 如果提供了 DIRECTORY,它会验证找到的 podspec 文件,包括子文件夹。 如果省略参数,则默认为当前工作目录。
129+
- `pod spec cat [QUERY]` 将名称与 QUERY 匹配的 podspec 的内容打印到标准输出。
130+
- `pod spec which [QUERY]` 打印名称与 QUERY 匹配的 .podspec 文件的路径
131+
- `pod spec edit [QUERY]` 打开要编辑的与 QUERY 匹配的 podspec。
132+
133+
### Repos
134+
<!--rehype:wrap-class=row-span-2-->
135+
136+
命令 | 说明
137+
:-- | --
138+
`pod repo add NAME URL [BRANCH]` | 在 `~/.cocoapods/repos/` 的本地 spec-repos 目录中克隆 URL。远程可以稍后由 NAME 引用
139+
`pod repo update [NAME]` | 更新 spec-repo NAME 的本地克隆。如果 NAME 被省略,这将更新 ~/.cocoapods/repos 中的所有 spec-repos
140+
`pod repo lint [NAME\|DIRECTORY]` | 对 spec-repo NAME 进行 lints。如果提供了目录,则假定它是存储库的根目录。最后,如果没有提供 NAME,这将 lint CocoaPods 已知的所有规范库
141+
`pod repo list` | 从 `~/.cocoapods/repos/` 的本地 spec-repos 目录中列出 repos
142+
`pod repo remove NAME` | 从 `~/.cocoapods/repos/` 的本地 spec-repos 目录中删除名为 NAME 的远程
143+
`pod repo push REPO [NAME.podspec]` | 验证当前工作目录中的 `NAME.podspec`\*.podspec,在 REPO 的本地副本 (`~/.cocoapods/repos/[REPO]`) 中为 pod 创建目录和版本文件夹,将 podspec 文件复制到版本中目录,最后它将 REPO 推送到其远程
144+
`pod setup` | 在 `~/.cocoapods/repos` 创建一个目录,该目录将保存您的规范存储库。它将在这里创建公共主规范仓库的克隆:<https://github.com/CocoaPods/Specs> 如果克隆已经存在,它将确保它是最新的
145+
<!--rehype:className=style-list-arrow-->
146+
147+
### Trunk
148+
<!--rehype:wrap-class=col-span-2-->
149+
150+
- `pod trunk add-owner POD OWNER-EMAIL` 将具有指定 OWNER-EMAIL 的注册用户添加为给定 POD 的 `owner`
151+
- `pod trunk info NAME` 返回有关 Pod 的信息
152+
- `pod trunk me` 包括有关您的注册的信息,然后是您的所有会话
153+
- `pod trunk push [PATH]` 在 PATH 发布 podspec 以使其可供 `master` 规范存储库的所有用户使用
154+
- `pod trunk register EMAIL [NAME]` 注册一个新帐户,或创建一个新会话
155+
- `pod trunk remove-owner POD OWNER-EMAIL` 将具有指定 OWNER-EMAIL 的用户从给定 POD 的 owner 中移除
156+
- `pod trunk deprecate NAME` 弃用 pod
157+
- `pod trunk delete NAME VERSION` *警告*:删除其他人所依赖的 Pod 版本通常被认为是不良行为!请考虑改用 <red>`deprecate`</red> 命令
158+
159+
什么是 Podfile?
160+
---
161+
162+
### 简单配置
163+
164+
```ruby
165+
target 'MyApp' do
166+
use_frameworks!
167+
pod 'Alamofire', '~> 3.0'
168+
end
169+
```
170+
171+
Podfile 可以非常简单,这会将 Alamofire 添加到单个目标
172+
173+
### 添加测试
174+
<!--rehype:wrap-class=row-span-2-->
175+
176+
```ruby
177+
source 'https://github.com/CocoaPods/Specs.git'
178+
source 'https://github.com/Artsy/Specs.git'
179+
180+
platform :ios, '9.0'
181+
inhibit_all_warnings!
182+
183+
target 'MyApp' do
184+
pod 'GoogleAnalytics', '~> 3.1'
185+
186+
# 拥有自己的 OCMock 副本
187+
# 并且可以通过应用访问 GoogleAnalytics
188+
# 承载测试目标
189+
190+
target 'MyAppTests' do
191+
inherit! :search_paths
192+
pod 'OCMock', '~> 2.0.1'
193+
end
194+
end
195+
196+
post_install do |installer|
197+
installer.pods_project.targets.each do |target|
198+
puts target.name
199+
end
200+
end
201+
```
202+
<!--rehype:className=wrap-text-->
203+
204+
链接应用程序及其测试包的更复杂 Podfile 的示例
205+
206+
### 指定 pod 版本
207+
208+
在开始一个项目时,希望使用最新版本的 Pod。这种情况,只需忽略版本要求
209+
210+
```ruby
211+
pod 'SSZipArchive'
212+
```
213+
214+
稍后在项目中,您可能希望冻结到特定版本的 Pod,在这种情况下,您可以指定该版本号
215+
216+
```ruby
217+
pod 'Objection', '0.9'
218+
```
219+
220+
### 隐式抽象目标
221+
222+
Podfile 的根目录存在隐式抽象目标,因此您可以将上面的示例编写为
223+
224+
```ruby
225+
pod 'ShowsKit'
226+
pod 'Fabric'
227+
228+
# 拥有自己的 ShowsKit + ShowWebAuth 副本
229+
target 'ShowsiOS' do
230+
pod 'ShowWebAuth'
231+
end
232+
233+
# 拥有自己的 ShowsKit + ShowTVAuth 副本
234+
target 'ShowsTV' do
235+
pod 'ShowTVAuth'
236+
end
237+
```
238+
239+
### 多个目标共享同一个 pod
240+
241+
```ruby
242+
# 在任何 Xcode 项目中都没有名为“Shows”的目标
243+
abstract_target 'Shows' do
244+
pod 'ShowsKit'
245+
pod 'Fabric'
246+
# 拥有自己的 ShowsKit + ShowWebAuth 副本
247+
target 'ShowsiOS' do
248+
pod 'ShowWebAuth'
249+
end
250+
# 拥有自己的 ShowsKit + ShowTVAuth 副本
251+
target 'ShowsTV' do
252+
pod 'ShowTVAuth'
253+
end
254+
end
255+
```
256+
257+
另见
258+
----
259+
260+
- [CocoaPods 官方网站](https://cocoapods.org/) *(cocoapods.org)*
261+
- [Cocoapods Cheatsheet](https://github.com/SebastianBoldt/Cocoapods-Cheatsheet) *(github.com)*

scripts/assets/cocoapods.svg

+3
Loading

0 commit comments

Comments
 (0)