aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/setup/build/running.html
blob: 06dc2f6e64df27954babde3de71efe0b2f099595 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
<html devsite><head>
    <title>运行编译系统</title>
    <meta name="project_path" value="/_project.yaml"/>
    <meta name="book_path" value="/_book.yaml"/>
  </head>
  <body>
  <!--
      Copyright 2017 The Android Open Source Project

      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
  -->

<p>本页提供了关于在特定设备上运行编译系统的详细信息,是对<a href="building.html">编译准备工作</a>部分的补充。
</p>

<h2 id="building-fastboot-and-adb">编译 fastboot 和 adb</h2>
<p>如果您还没有 <code>fastboot</code> 和 <code>adb</code>,则可以使用常规编译系统来编译。请按照<a href="building.html">编译准备工作</a>中的说明操作,并将主 <code>make</code> 命令替换为以下命令:</p>
<pre class="devsite-click-to-copy devsite-terminal">make fastboot adb</pre>

<h2 id="booting-into-fastboot-mode">启动进入 fastboot 模式</h2>
<p><code>Fastboot</code> 是一种引导加载程序模式,您可以在该模式下刷写设备。
在设备冷启动过程中,可使用以下组合键进入 <code>fastboot</code> 模式:</p>
<table>
<thead>
<tr>
<th>设备</th>
<th>代号</th>
<th>组合键</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pixel 3 XL</td>
<td>crosshatch</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Pixel 3</td>
<td>blueline</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Pixel 2 XL</td>
<td>taimen</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Pixel 2</td>
<td>walleye</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Pixel XL</td>
<td>marlin</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Pixel</td>
<td>sailfish</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>hikey</td>
<td>hikey</td>
<td>连接 J15 的引脚 1-2 和 5-6。</td>
</tr>
<tr>
<td>Nexus 6P</td>
<td>angler</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 5X</td>
<td>bullhead</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 6</td>
<td>shamu</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus Player</td>
<td>fugu</td>
<td>按住电源键<em></em>。</td>
</tr>
<tr>
<td>Nexus 9</td>
<td>volantis</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 5</td>
<td>hammerhead</td>
<td>同时按住音量调高键和音量调低键,然后按住电源键。<em></em><em></em><em></em></td>
</tr>
<tr>
<td>Nexus 7</td>
<td>flo</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 7 3G</td>
<td>deb</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 10</td>
<td>manta</td>
<td>同时按住音量调高键和音量调低键,然后按住电源键。<em></em><em></em><em></em></td>
</tr>
<tr>
<td>Nexus 4</td>
<td>mako</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 7 (2012)</td>
<td>grouper</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus 7 3G (2012)</td>
<td>tilapia</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus Q</td>
<td>phantasm</td>
<td>启动设备,然后在 LED 指示灯亮起后用一只手盖住设备,直至指示灯变成红色。</td>
</tr>
<tr>
<td>Galaxy Nexus GSM</td>
<td>maguro</td>
<td>同时按住音量调高键和音量调低键,然后按住电源键。<em></em><em></em><em></em></td>
</tr>
<tr>
<td>Galaxy Nexus (Verizon)</td>
<td>toro</td>
<td>同时按住音量调高键和音量调低键,然后按住电源键。<em></em><em></em><em></em></td>
</tr>
<tr>
<td>Galaxy Nexus (Sprint)</td>
<td>toroplus</td>
<td>同时按住音量调高键和音量调低键,然后按住电源键。<em></em><em></em><em></em></td>
</tr>
<tr>
<td>Motorola Xoom</td>
<td>wingray</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus S</td>
<td>crespo</td>
<td>按住音量调高键,然后按住电源键。<em></em><em></em></td>
</tr>
<tr>
<td>Nexus SG</td>
<td>crespo4g</td>
<td>按住音量调高键,然后按住电源键。<em></em><em></em></td>
</tr>
</tbody>
</table>

<p>您还可以使用命令 <code>adb reboot bootloader</code> 直接在 Android 系统中重新启动进入引导加载程序,而无需使用任何组合键。</p>

<h2 id="unlocking-the-bootloader">解锁引导加载程序</h2>

<p>只有在引导加载程序允许的情况下,您才可以刷写定制系统,而引导加载程序默认处于锁定状态。您可以解锁引导加载程序,但这样做会导致系统出于保护隐私方面的考虑而删除用户数据。<em></em>解锁之后,系统会清空设备上的所有数据,即应用中的个人数据以及可通过 USB 访问的共享数据(包括照片和影片)。请务必先备份设备上的所有重要文件,然后再尝试解锁引导加载程序。</p>

<p>您只需解锁引导加载程序一次即可,并可视需要将其重新锁定。</p>

<h3>解锁新款设备</h3>
<p>自 2014 年以来发布的所有 Nexus 和 Pixel 设备(从 Nexus 6 和 Nexus 9 开始)都内置有恢复出厂设置保护功能,需要通过多个步骤才能解锁引导加载程序。</p>

<ol>
<li>要在设备上启用 OEM 解锁功能,请执行以下操作:
<ol>
  <li>在“设置”中,点按<strong>关于手机</strong>,然后点按<strong>版本号</strong>七 (7) 次。</li>
  <li>当看到“您已处于开发者模式”这条消息后,点按返回按钮。</li>
  <li>点按<strong>开发者选项</strong>,然后启用 <strong>OEM 解锁</strong>和 <strong>USB 调试</strong>(如果 OEM 解锁处于停用状态,请连接到互联网,以便设备可以至少签到一次。如果 OEM 解锁仍处于停用状态,则说明您的设备可能已被运营商锁定 SIM 卡,系统无法解锁引导加载程序)。</li>
  </ol>
</li>
<li>重新启动进入引导加载程序,然后使用 <code>fastboot</code> 解锁。
  <ul>
  <li>对于新款设备(2015 年及之后发布的设备):
  <pre class="devsite-click-to-copy devsite-terminal">fastboot flashing unlock</pre>
  </li>
  <li>对于老款设备(2014 年及之前发布的设备):
  <pre class="devsite-click-to-copy devsite-terminal">fastboot oem unlock</pre>
  </li>
  </ul>
</li>
<li>在屏幕上确认解锁。</li>
</ol>

<aside class="note"><strong>注意</strong>:在 Nexus 10 上,解锁引导加载程序后,内部存储空间仍将保持未格式化状态。您可以依次使用 <code>fastboot format cache</code> 和 <code>fastboot format userdata</code> 来格式化设备。</aside>

<h3 id="relocking-the-bootloader">重新锁定引导加载程序</h3>
<p>要重新锁定引导加载程序,请执行以下命令:</p>
<ul>
<li>对于新款设备(2015 年及之后发布的设备):
<pre class="devsite-click-to-copy devsite-terminal">fastboot flashing lock</pre>
</li>
<li>对于老款设备(2014 年及之前发布的设备):
<pre class="devsite-click-to-copy devsite-terminal">fastboot oem lock</pre>
</li>
</ul>

<aside class="note"><strong>注意</strong>:在 Motorola Xoom 上重新锁定引导加载程序会清空用户数据(包括共享的 USB 数据)。</aside>

<h2 id="flash-unlock">使用刷写解锁</h2>
<p><code>getFlashLockState()</code> 系统 API 会传输引导加载程序状态,<code>PersistentDataBlockManager.getFlashLockState()</code> 系统 API 会返回兼容设备上引导加载程序的锁定状态。</p>

<table>
<tbody><tr>
<th>返回的值</th>
<th>条件</th>
</tr>
<tr>
<td><code>FLASH_LOCK_UNKNOWN</code></td>
<td>仅升级到 Android 7.x 或更高版本的符合以下条件的设备会返回此值:设备支持刷写锁定/解锁功能,但之前不支持获取刷写锁定状态所需的引导加载程序变更。<br />
<ul>
<li>运行 Android 7.x 或更高版本的新设备必须为 <code>FLASH_LOCK_LOCKED</code> 或 <code>FLASH_LOCK_UNLOCKED</code> 状态。</li>
<li>升级到 Android 7.x 或更高版本且不支持刷写解锁/锁定功能的设备应返回 <code>FLASH_LOCK_LOCKED</code> 状态。</li>
</ul>
</td>
</tr>
<tr>
<td><code>FLASH_LOCK_LOCKED</code></td>
<td>不支持刷写锁定/解锁的设备(即设备始终处于锁定状态)或支持刷写锁定/解锁且处于锁定状态的设备应该会返回此值。</td>
</tr>
<tr>
<td><code>FLASH_LOCK_UNLOCKED</code></td>
<td>支持刷写锁定/解锁且当前处于已解锁状态的设备会返回此值。</td>
</tr>
</tbody></table>

<p>制造商应测试由已锁定/解锁引导加载程序的设备返回的值。例如,Android 开源项目 (AOSP) 包含根据 <code>ro.boot.flash.locked</code> 启动属性返回值的参考实现。示例代码位于以下目录中:</p>

<ul>
<li><code>frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java</code></li>
<li><code>frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java</code></li>
</ul>

<h2 id="selecting-device-build">选择设备编译系统</h2>

<p><code>lunch</code> 菜单中提供了建议的设备编译系统,在不使用任何参数的情况下运行 <code>lunch</code> 命令即可查看。
您可以从 developers.google.com 下载 Nexus 设备的出厂映像和二进制文件。请参阅<a href="requirements#binaries">设备二进制文件</a>进行下载。有关详情以及其他资源,请参阅<a href="building.html#obtaining-proprietary-binaries">下载专有二进制文件</a>。

<table>
<thead>
<tr>
<th>设备</th>
<th>代号</th>
<th>编译配置</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pixel 3 XL</td>
<td>crosshatch</td>
<td>aosp_crosshatch-userdebug</td>
</tr>
<tr>
<td>Pixel 3</td>
<td>blueline</td>
<td>aosp_blueline-userdebug</td>
</tr>
<tr>
<td>Pixel 2 XL</td>
<td>taimen</td>
<td>aosp_taimen-userdebug</td>
</tr>
<tr>
<td>Pixel 2</td>
<td>walleye</td>
<td>aosp_walleye-userdebug</td>
</tr>
<tr>
<td>Pixel XL</td>
<td>marlin</td>
<td>aosp_marlin-userdebug</td>
</tr>
<tr>
<td>Pixel</td>
<td>sailfish</td>
<td>aosp_sailfish-userdebug</td>
</tr>
<tr>
<td>HiKey</td>
<td>hikey</td>
<td>hikey-userdebug</td>
</tr>
<tr>
<td>Nexus 6P</td>
<td>angler</td>
<td>aosp_angler-userdebug</td>
</tr>
<tr>
<td>Nexus 5X</td>
<td>bullhead</td>
<td>aosp_bullhead-userdebug</td>
</tr>
<tr>
<td>Nexus 6</td>
<td>shamu</td>
<td>aosp_shamu-userdebug</td>
</tr>
<tr>
<td>Nexus Player</td>
<td>fugu</td>
<td>aosp_fugu-userdebug</td>
</tr>
<tr>
<td>Nexus 9</td>
<td>volantis (flounder)</td>
<td>aosp_flounder-userdebug</td>
</tr>
<tr>
<td>Nexus 5 (GSM/LTE)</td>
<td>hammerhead</td>
<td>aosp_hammerhead-userdebug</td>
</tr>
<tr>
<td>Nexus 7 (WLAN)</td>
<td>razor (flo)</td>
<td>aosp_flo-userdebug</td>
</tr>
<tr>
<td>Nexus 7(移动版)</td>
<td>razorg (deb)</td>
<td>aosp_deb-userdebug</td>
</tr>
<tr>
<td>Nexus 10</td>
<td>mantaray (manta)</td>
<td>full_manta-userdebug</td>
</tr>
<tr>
<td>Nexus 4</td>
<td>occam (mako)</td>
<td>full_mako-userdebug</td>
</tr>
<tr>
<td>Nexus 7 (WLAN)</td>
<td>nakasi (grouper)</td>
<td>full_grouper-userdebug</td>
</tr>
<tr>
<td>Nexus 7(移动版)</td>
<td>nakasig (tilapia)</td>
<td>full_tilapia-userdebug</td>
</tr>
<tr>
<td>Galaxy Nexus (GSM/HSPA+)</td>
<td>yakju (maguro)</td>
<td>full_maguro-userdebug</td>
</tr>
<tr>
<td>Galaxy Nexus (Verizon)</td>
<td>mysid (toro)</td>
<td>aosp_toro-userdebug</td>
</tr>
<tr>
<td>Galaxy Nexus(试验版)</td>
<td>mysidspr (toroplus)</td>
<td>aosp_toroplus-userdebug</td>
</tr>
<tr>
<td>Motorola Xoom(美国 WLAN 版)</td>
<td>wingray</td>
<td>full_wingray-userdebug</td>
</tr>
<tr>
<td>Nexus S</td>
<td>soju (crespo)</td>
<td>full_crespo-userdebug</td>
</tr>
<tr>
<td>Nexus S 4G</td>
<td>sojus (crespo4g)</td>
<td>full_crespo4g-userdebug</td>
</tr>
</tbody>
</table>

</p><aside class="note"><strong>注意</strong>:请不要在原本搭载 Android 4.1.2 或更高版本的 Nexus 7 上使用 Android 4.1.1。</aside>

<h2 id="flashing-a-device">刷写设备</h2>

<p>您可以通过运行一个命令来刷写整个 Android 系统;这样做可验证正在刷写的系统与已安装的引导加载程序和无线通信模块的驱动程序是否兼容,还可以将启动、恢复和系统分区一起写入,然后重新启动系统。与 <code>fastboot oem
unlock</code> 类似,刷写设备也会清空所有用户数据。</p>

<p>要刷写设备,请执行以下操作:</p>
<ol>
<li>在启动时按住相应的组合键或使用以下命令使设备进入 <code>fastboot</code> 模式:<pre class="devsite-click-to-copy devsite-terminal">adb reboot bootloader</pre></li>
<li>在设备处于 fastboot 模式后,运行以下命令:
<pre class="devsite-click-to-copy devsite-terminal">fastboot flashall -w</pre>
<code>-w</code> 选项会清除设备上的 <code>/data</code> 分区;该选项在您第一次刷写特定设备时非常有用,但在其他情况下则没必要使用。</li>
</ol>

<aside class="note"><strong>注意</strong>:在 Motorola Xoom 上通过 <code>fastboot</code> 创建的文件系统无法达到最佳工作状态。建议您使用 <code>$ adb reboot
recovery</code> 命令通过恢复功能来重新创建文件系统。在执行恢复操作时,打开菜单(同时按电源键和音量调高键),擦除缓存分区,然后擦除数据。</aside>

<h2 id="restoring-devices-to-factory-state">将设备恢复到出厂状态</h2>

<p>您可以在 <a href="https://developers.google.com/android/nexus/images" class="external">Nexus 和 Pixel 设备的出厂映像</a>上查看 Google 设备的出厂映像。Motorola Xoom 的出厂映像由 Motorola 直接提供。</p>

</body></html>