Downloading the Source Tree
Installing Repo
Repo is a tool that makes it easier to work with Git in the
context of Android
To install, initialize, and configure Repo, follow these steps:
Initializing
a Repo client
After installing Repo, set up your client to access the android
source repository:
- Create an empty directory to hold your working files. If
you're using MacOS, this has to be on a case-sensitive filesystem.
Give it any name you like:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
- Run
repo init to bring down the
latest version of Repo with all its most recent bug fixes. You must
specify a URL for the manifest, which specifies where the various
repositories included in the Android source will be placed within
your working directory.
$ repo init -u https://android.googlesource.com/platform/manifest
To check out a branch other than "master", specify it with
-b:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
- When prompted, please configure Repo with your real name and
email address. To use the Gerrit code-review tool, you will need an
email address that is connected with a registered
Google account. Make sure this is a live address at which you
can receive messages. The name that you provide here will show up in
attributions for your code submissions.
A successful initialization will end with a message stating that
Repo is initialized in your working directory. Your client directory
should now contain a
.repo directory
where files such as the manifest will be kept.
Getting the files
To pull down files to your working directory from the repositories
as specified in the default manifest, run
$ repo sync
The Android source files will be located in your working directory
under their project names. The initial sync operation will take an
hour or more to complete. For more about
repo
sync and other Repo commands, see
Version
Control.
Using
authentication
By default, access to the Android source code is anonymous. To
protect the servers against excessive usage, each IP address is
associated with a quota.
When sharing an IP address with other users (e.g. when accessing
the source repositories from beyond a NAT firewall), the quotas can
trigger even for regular usage patterns (e.g. if many users sync new
clients from the same IP address within a short period).
In that case, it is possible to use authenticated access, which
then uses a separate quota for each user, regardless of the IP
address.
The first step is to create a password from
the
password generator and to save it in
~/.netrc
according to the instructions on that page.
The second step is to force authenticated access, by using the
following manifest URI:
https://android.googlesource.com/a/platform/manifest.
Notice how the
/a/ directory prefix
triggers mandatory authentication. You can convert an existing client
to use mandatory authentication with the following command:
$ repo init -u https://android.googlesource.com/a/platform/manifest
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.
$ lunch full-eng
The example above refers to a complete build for the emulator, with
all debugging enabled.
Build the Code
Build everything with
make. GNU make
can handle parallel tasks with a
-jN
argument, and it's common to use a number of tasks N that's between 1
and 2 times the number of hardware threads on the computer being used
for the build. E.g. on a dual-E5520 machine (2 CPUs, 4 cores per CPU,
2 threads per core), the fastest builds are made with commands
between
make -j16 and
make
-j32.
$ make -j4
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.
Emulate
an Android Device
The emulator is added to your path automatically by the build
process. To run the emulator, type
$ emulator
Trouble Shooting
I got the following error while
building
make: ***
[out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
I
fixed it by installing following package:
sudo
apt-get install lib32ncurses5-dev
sudo apt-get install
libncurses5-dev
Before
running the emulator change the permission of file
chmod
777 /home/surabhi/Android/out/target/product/generic/system.img
More details can be found at the following Link :