blob: d8df1fbd0fec6faa57558dad346df4d625ea5ba2 [file] [log] [blame]
<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>
</p><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>
<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>