# Building the System

The basic sequence of build commands is as follows:

## Initialize

Initialize the environment with the envsetup.sh script. Note that replacing "source" with a single dot saves a few characters, and the short form is more commonly used in documentation.

$source build/envsetup.sh  or $ . build/envsetup.sh


## Choose a Target

Choose which target to build with lunch . The exact configuration can be passed as an argument, e.g.



## Run It!

You can either run your build on an emulator or flash it on a device. Please note that you have already selected your build target with lunch , and it is unlikely at best to run on a different target than it was built for.

### Flash a Device

To flash a device, you will need to use fastboot , which should be included in your path after a successful build. Place the device in fastboot mode either manually by holding the appropriate key combination at boot, or from the shell with

$adb reboot bootloader  Once the device is in fastboot mode, run $ fastboot flashall -w


The -w option wipes the /data partition on the device; this is useful for your first time flashing a particular device, but is otherwise unnecessary.

### Emulate an Android Device

The emulator is added to your path automatically by the build process. To run the emulator, type



## Gmake Version 3.82

There is a bug in make version 3.82 on Mac OS that prevents building Android.

TODO: what the error looks like with GNU make 3.82 on older builds that don't explicitly detect it.

Follow the instructions on the Initializing page for reverting GNU make from 3.82 to 3.81.

## Case Insensitive Filesystem

If you are building on an HFS filesystem on Mac OS X, you may encounter an error such as

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************


Please follow the instructions on the Initializing page for creating a case-sensitive disk image.

## No USB Permission

On most Linux systems, unprivileged users cannot access USB ports by default. If you see a permission denied error, follow the instructions on the Initializing page for configuring USB access.

If adb was already running and cannot connect to the device after getting those rules set up, it can be killed with adb kill-server . That will cause adb to restart with the new configuration.

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客