| page.title=Running Builds |
| @jd:body |
| |
| <!-- |
| Copyright 2015 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. |
| --> |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>In this document</h2> |
| <ol id="auto-toc"> |
| </ol> |
| </div> |
| </div> |
| |
| <p>This page provides details for running builds on specific devices and is |
| designed to complement the information in |
| <a href="{@docRoot}source/building.html">Building the System</a>.</p> |
| |
| <h2 id="building-fastboot-and-adb">Building fastboot and adb</h2> |
| <p>If you don't already have fastboot and adb, you can build them with the |
| regular build system. Use the instructions in |
| <a href="{@docRoot}source/building.html">Building a System</a> and replace the |
| main <code>make</code> command with:</p> |
| <pre><code>$ make fastboot adb |
| </code></pre> |
| |
| <h2 id="booting-into-fastboot-mode">Booting into fastboot mode</h2> |
| <p>During a cold boot of a device, use the following key combinations to boot |
| into fastboot mode, which is a mode in the bootloader that can be used to flash |
| the device:</p> |
| <table> |
| <thead> |
| <tr> |
| <th>Device</th> |
| <th>Keys</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>hikey</td> |
| <td>Link pins 1 - 2 and 5 - 6 of J15</td> |
| </tr> |
| <tr> |
| <td>angler</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>bullhead</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>shamu</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>fugu</td> |
| <td>Press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>volantis</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>hammerhead</td> |
| <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press |
| and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>flo</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>deb</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>manta</td> |
| <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press |
| and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>mako</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>grouper</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>tilapia</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>phantasm</td> |
| <td>Power the device, cover it with one hand after the LEDs light up and until |
| they turn red</td> |
| </tr> |
| <tr> |
| <td>maguro</td> |
| <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press |
| and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>toro</td> |
| <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press |
| and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>toroplus</td> |
| <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press |
| and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>panda</td> |
| <td>Press and hold <em>Input</em>, then press <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>wingray</td> |
| <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>crespo</td> |
| <td>Press and hold <em>Volume Up</em>, then press and hold <em>Power</em></td> |
| </tr> |
| <tr> |
| <td>crespo4g</td> |
| <td>Press and hold <em>Volume Up</em>, then press and hold <em>Power</em></td> |
| </tr> |
| </tbody> |
| </table> |
| <p>You can also use the command <code>adb reboot bootloader</code> to reboot |
| from Android directly into the bootloader with no key combinations.</p> |
| |
| <h2 id="unlocking-the-bootloader">Unlocking the bootloader</h2> |
| |
| <p>It's possible to flash a custom system only if the bootloader allows it, and |
| the bootloader is locked by default. You can unlock the bootloader, but be aware |
| that doing so deletes the user data for privacy reasons (the unlock operation |
| needs to run only once). After unlocking, all data on the device is erased, i.e. |
| both the applications' private data and the shared data that is accessible over |
| USB, including photos and movies. Be sure to back up any precious files before |
| unlocking the bootloader.</p> |
| |
| <p>With the device in fastboot mode, unlock the bootloader using:</p> |
| |
| <pre> |
| $ fastboot oem unlock |
| </pre> |
| |
| <p>The procedure must be confirmed on-screen.</p> |
| |
| <p>On Nexus 10, after unlocking the bootloader, the internal storage remains |
| unformatted. You can format the device using:</p> |
| |
| <pre> |
| $ fastboot format cache |
| $ fastboot format userdata |
| </pre> |
| |
| <p>To re-lock the bootloader, use:</p> |
| |
| <pre>$ fastboot oem lock |
| </pre> |
| |
| <p class="note"><strong>Note</strong>: Re-locking the bootloading on a Motorola Xoom |
| erases user data (including the shared USB data).</p> |
| |
| <h2 id="flash-unlock">Using Flash Unlock</h2> |
| |
| <p> |
| Android 7.0 introduces a new system API, <code>getFlashLockState()</code>, to |
| transmit bootloader state. |
| </p> |
| |
| <p> |
| Android 7.0 added the following system API that returns the bootloader’s lock |
| status on compliant devices: |
| </p> |
| |
| <pre> |
| PersistentDataBlockManager.getFlashLockState() |
| </pre> |
| |
| <table> |
| <tr> |
| <th>Return value</th> |
| <th>Conditions</th> |
| </tr> |
| <tr> |
| <td><code>FLASH_LOCK_UNKNOWN</code> |
| </td> |
| <td>Returned only by devices upgrading to Android 7.0 that have not supported |
| bootloader changes required to get the flash lock status if they support |
| flashing lock/unlock capability. |
| <p> |
| New Android 7.0 devices must be in either <code>FLASH_LOCK_LOCKED</code> or <code>FLASH_LOCK_UNLOCKED</code> state. |
| If a device is upgrading to Android 7.0 and does not support flashing unlock/lock |
| capability, then it should simply return <code>FLASH_LOCK_LOCKED</code> state. |
| </td> |
| </tr> |
| <tr> |
| <td><code>FLASH_LOCK_LOCKED</code> |
| </td> |
| <td>Should be returned by any device that does not support flashing |
| lock/unlock (i.e. the device is always locked), or any device that does support |
| flashing lock/unlock and is in the locked state. |
| </td> |
| </tr> |
| <tr> |
| <td><code>FLASH_LOCK_UNLOCKED</code> |
| </td> |
| <td>Returned by any device that supports flashing lock/unlock and is |
| currently in the unlocked state. |
| </td> |
| </tr> |
| </table> |
| |
| <h3 id="examples-and-source">Examples and source</h3> |
| |
| <p> |
| In the Android 7.0 release, the Android Open Source Project (AOSP) contains a reference |
| implementation that returns a value based on the <code>ro.boot.flash.locked |
| </code>boot property. |
| </p> |
| |
| <p> |
| The code lives in: |
| </p> |
| |
| <pre> |
| frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java |
| frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java |
| </pre> |
| |
| <h3 id="validation">Validation</h3> |
| <p> |
| Manufacturers should test the values returned by devices with locked and |
| unlocked bootloaders. |
| </p> |
| |
| <h2 id="selecting-device-build">Selecting a device build</h2> |
| |
| <p>The recommended builds for devices are available from the lunch menu, |
| accessed when running the <code>lunch</code> command with no arguments. You can |
| download factory images and binaries for Nexus devices from developers.google.com:</p> |
| |
| <ul> |
| <li><a href="https://developers.google.com/android/nexus/blobs-preview">Preview binaries (blobs)</a></li> |
| <li><a href="https://developers.google.com/android/nexus/images">Factory images for released devices</a></li> |
| <li><a href="https://developers.google.com/android/nexus/drivers">Support binaries (drivers) for release devices</a></li> |
| </ul> |
| |
| <p>See <a href="building.html#obtaining-proprietary-binaries">Obtaining |
| proprietary binaries</a> for more details and <a |
| href="requirements.html#binaries">Device binaries requirements</a> for other |
| resources.</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Device</th> |
| <th>Code name</th> |
| <th>Build configuration</th> |
| </tr> |
| </thead> |
| <tbody> |
| <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 (Wi-Fi)</td> |
| <td>razor (flo)</td> |
| <td>aosp_flo-userdebug</td> |
| </tr> |
| <tr> |
| <td>Nexus 7 (Mobile)</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 (Wi-Fi)</td> |
| <td>nakasi (grouper)</td> |
| <td>full_grouper-userdebug</td> |
| </tr> |
| <tr> |
| <td>Nexus 7 (Mobile)</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 (Experimental)</td> |
| <td>mysidspr (toroplus)</td> |
| <td>aosp_toroplus-userdebug</td> |
| </tr> |
| <tr> |
| <td>PandaBoard (Archived)</td> |
| <td>panda</td> |
| <td>aosp_panda-userdebug</td> |
| </tr> |
| <tr> |
| <td>Motorola Xoom (U.S. Wi-Fi)</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 class="note"><b>Note</b>: Do not use Android 4.1.1 on a Nexus 7 originally |
| sold with Android 4.1.2 or newer.</p> |
| |
| <h2 id="flashing-a-device">Flashing a device</h2> |
| |
| <p>You can flash an entire Android system in a single command; doing so verifies |
| the system being flashed is compatible with the installed bootloader and radio, |
| writes the boot, recovery, and system partitions together, and then reboots the |
| system. Flashing also erases all user data, similarly to <code>fastboot oem |
| unlock</code>.</p> |
| |
| <p>Place the device in fastboot mode either manually by holding the appropriate |
| key combination at boot, or from the shell with:</p> |
| |
| <pre> |
| $ adb reboot bootloader |
| </pre> |
| |
| <p>Once the device is in fastboot mode, run:</p> |
| |
| <pre> |
| $ fastboot flashall -w |
| </pre> |
| |
| <p>The <code>-w</code> option wipes the <code>/data</code> partition on the |
| device; this is useful for your first time flashing a particular device but is |
| otherwise unnecessary.</p> |
| |
| <p class="note"><strong>Note</strong>: Filesystems created via fastboot on Motorola Xoom |
| do not function optimally. We recommend re-creating filesystems through |
| recovery, using: <code>$ adb reboot recovery</code>. While in recovery, open the |
| menu (press Power + Volume Up), wipe the cache partition, then wipe data.</p> |
| |
| |
| <h2 id="restoring-devices-to-factory-state">Restoring devices to |
| factory state</h2> |
| |
| <p>Factory images for Nexus 5, Nexus 10, Nexus 4, Nexus Q, Nexus 7, Galaxy Nexus |
| (GSM/HSPA+ "yakju" and "takju", and CDMA/LTE "mysid" and "mysidspr"), Nexus S, |
| and Nexus S 4G are available from |
| <a href="https://developers.google.com/android/nexus/images">Google's factory |
| image</a> page.</p> |
| |
| <p>Factory images for the Motorola Xoom are distributed directly by Motorola.</p> |