<html devsite>
  <head>
    <title>Downloading the Source</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>
  The Android source tree is located in a Git repository hosted by Google. The
  Git repository includes metadata for the Android source, including those
  related to changes to the source and the date they were made. This document
  describes how to download the source tree for a specific Android code-line.
</p>
<p>
 To instead start with a factory image for a specific device, see
 <a href="running.html#selecting-device-build">Selecting a device build</a>.
</p>
<h2 id="installing-repo">
  Installing Repo
</h2>
<p>
  Repo is a tool that makes it easier to work with Git in the context of
  Android. For more information about Repo, see the
  <a href="../develop/repo.html">Repo Command Reference</a>.
</p>
<p>
  To install Repo:
</p>
<ol>
  <li>
    <p>
      Make sure you have a <code>bin/</code> directory in your home directory
      and that it is included in your path:
    </p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">mkdir ~/bin</code>
<code class="devsite-terminal">PATH=~/bin:$PATH</code>
</pre>
  </li>
  <li>
    <p>
      Download the Repo tool and ensure that it is executable:
    </p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">curl https://storage.googleapis.com/git-repo-downloads/repo &gt; ~/bin/repo</code>
<code class="devsite-terminal">chmod a+x ~/bin/repo</code>
</pre>
  </li>
</ol>
<p>
  For version 1.21, the SHA-1 checksum for repo is
  <code>b8bd1804f432ecf1bab730949c82b93b0fc5fede</code>.
</p>
<p>
  For version 1.22, the SHA-1 checksum for repo is
  <code>da0514e484f74648a890c0467d61ca415379f791</code>.
</p>
<p>
  For version 1.23, the SHA-256 checksum for repo is
  <code>e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5</code>.
</p>
<h2 id="initializing-a-repo-client">
  Initializing a Repo client
</h2>
<p>
  After installing Repo, set up your client to access the Android source
  repository:
</p>
<ol>
  <li>
    <p>
      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:
    </p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">mkdir WORKING_DIRECTORY</code>
<code class="devsite-terminal">cd WORKING_DIRECTORY</code>
</pre>
  </li>
  <li>
    <p>
      Configure git 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 <a href=
      "https://www.google.com/accounts">registered Google account</a>. 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.
    </p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">git config --global user.name "Your Name"</code>
<code class="devsite-terminal">git config --global user.email "you@example.com"</code>
</pre>
  </li>
  <li>
    <p>
      Run <code>repo init</code> 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.
    </p>
<pre class="devsite-terminal devsite-click-to-copy">
repo init -u https://android.googlesource.com/platform/manifest
</pre>
    <p>
      To check out a branch other than "master", specify it with <code>-b</code>.
      For a list of branches, see <a href="../start/build-numbers.html#source-code-tags-and-builds">
      Source Code Tags and Builds</a>.
    </p>
<pre class="devsite-terminal devsite-click-to-copy">
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
</pre>
  </li>
</ol>
<p>
  A successful initialization will end with a message stating that Repo is
  initialized in your working directory. Your client directory should now
  contain a <code>.repo</code> directory where files such as the manifest will
  be kept.
</p>
<h2 id="getting-the-files">
  Downloading the Android source tree
</h2>
<p>
  To pull down the Android source tree to your working directory from the
  repositories as specified in the default manifest, run
</p>
<pre class="devsite-terminal devsite-click-to-copy">repo sync</pre>
<p>
  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 <code>repo sync</code> and other Repo commands, see
  <a href="../develop/index.html">Developing</a>.
</p>
<h2 id="using-authentication">
  Using Authentication
</h2>
<p>
  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.
</p>
<p>
  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).
</p>
<p>
  In that case, it is possible to use authenticated access, which then uses a
  separate quota for each user, regardless of the IP address.
</p>
<p>
  The first step is to create a password with <a href=
  "https://android.googlesource.com/new-password">the password generator</a>
  and follow the instructions on the password generator page.
</p>
<p>
  The second step is to force authenticated access by using the following
  manifest URI: <code>https://android.googlesource.com/a/platform/manifest</code>.
  Notice how the <code>/a/</code> directory prefix triggers mandatory
  authentication. You can convert an existing client to use mandatory
  authentication with the following command:
</p>
<pre class="devsite-terminal devsite-click-to-copy">
repo init -u https://android.googlesource.com/a/platform/manifest
</pre>
<h2 id="troubleshooting-network-issues">
  Troubleshooting network issues
</h2>
<p>
  When downloading from behind a proxy (which is common in some corporate
  environments), it might be necessary to explicitly specify the proxy that is
  then used by Repo:
</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">export HTTP_PROXY=http://&lt;proxy_user_id&gt;:&lt;proxy_password&gt;@&lt;proxy_server&gt;:&lt;proxy_port&gt;</code>
<code class="devsite-terminal">export HTTPS_PROXY=http://&lt;proxy_user_id&gt;:&lt;proxy_password&gt;@&lt;proxy_server&gt;:&lt;proxy_port&gt;</code>
</pre>
<p>
  More rarely, Linux clients experience connectivity issues, getting stuck in
  the middle of downloads (typically during "Receiving objects"). It has been
  reported that tweaking the settings of the TCP/IP stack and using non-parallel
  commands can improve the situation. You need root access to modify the TCP
  setting:
</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">sudo sysctl -w net.ipv4.tcp_window_scaling=0</code>
<code class="devsite-terminal">repo sync -j1</code>
</pre>
<h2 id="using-a-local-mirror">
  Using a local mirror
</h2>
<p>
  When using several clients, especially in situations where bandwidth is
  scarce, it is better to create a local mirror of the entire server content,
  and to sync clients from that mirror (which requires no network access). The
  download for a full mirror is smaller than the download of two clients, while
  containing more information.
</p>
<p>
  These instructions assume that the mirror is created in 
  <code>/usr/local/aosp/mirror</code>. The first step is to create and sync the
  mirror itself. Notice the <code>--mirror</code> flag, which can be specified
  only when creating a new client:
</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">mkdir -p /usr/local/aosp/mirror</code>
<code class="devsite-terminal">cd /usr/local/aosp/mirror</code>
<code class="devsite-terminal">repo init -u https://android.googlesource.com/mirror/manifest --mirror</code>
<code class="devsite-terminal">repo sync</code>
</pre>
<p>
  Once the mirror is synced, new clients can be created from it. Note that it's
  important to specify an absolute path:
</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">mkdir -p /usr/local/aosp/master</code>
<code class="devsite-terminal">cd /usr/local/aosp/master</code>
<code class="devsite-terminal">repo init -u /usr/local/aosp/mirror/platform/manifest.git</code>
<code class="devsite-terminal">repo sync</code>
</pre>
<p>
  Finally, to sync a client against the server, the mirror needs to be synced
  against the server, then the client against the mirror:
</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">cd /usr/local/aosp/mirror</code>
<code class="devsite-terminal">repo sync</code>
<code class="devsite-terminal">cd /usr/local/aosp/master</code>
<code class="devsite-terminal">repo sync</code>
</pre>
<p>
  It's possible to store the mirror on a LAN server and to access it over NFS,
  SSH or Git. It's also possible to store it on a removable drive and to pass
  that drive around between users or between machines.
</p>
<h2 id="verifying-git-tags">
  Verifying Git tags
</h2>
<p>
  Load the following public key into your GnuPG key database. The key is used to
  sign annotated tags that represent releases.
</p>
<pre class="devsite-terminal devsite-click-to-copy">
gpg --import
</pre>
<p>
  Copy and paste the key below, then enter EOF (Ctrl-D) to end the input and
  process the keys.
</p>
<pre class="devsite-click-to-copy">
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
</pre>
<p>
  After importing the keys, you can verify any tag with
</p>
<pre class="devsite-terminal devsite-click-to-copy">
git tag -v TAG_NAME
</pre>

  </body>
</html>
