Files
android_development/pdk/docs/guide/getting_source_code.jd
David Warren 5f6ca4f519 AI 148105: Assigning to Ryan for Dr No Approval.
These are new content files for the partner development kit that will be hosted off of source.android.com externally.

Automated import of CL 148105
2009-04-30 17:11:58 -07:00

127 lines
6.1 KiB
Plaintext
Executable File

page.title=Getting Source Code
@jd:body
<a name="toc"/>
<div style="padding:10px">
<a href="#androidSourceSetupBuildGitSetup">Introduction</a><br/>
<a href="#androidSourceSetupBuildGitSetupInstall">Installing and Configuring Git</a><br/>
<a href="#androidSourceSetupBuildGitSetupServer">Establishing Server Access</a><br/><div style="padding-left:40px">
<a href="#androidSourceSetupBuildGitSetupServerRSAKeys">Generating RSA Keys</a><br/>
<a href="#androidSourceSetupBuildGitSetupServerVerifyConnection">Verifying a Connection to the Git Server</a><br/></div>
<a href="#androidSourceSetupGetCode">Downloading Code</a><br/>
<a href="#androidSourceSetupExtractingPatch">Extracting an Android Patch</a><br/></div>
<a name="androidSourceSetupBuildGitSetup"></a><h2>Introduction</h2>
<p>Android relies on Git, a version control system, to install the Android platform. You will need to install Git 1.5.2 or greater in order to access the source tree. Please visit <a href="http://git.or.cz/">http://git.or.cz/</a> for more information regarding Git.</p>
<p>Git permits you to control access to working directories, and we recommend that you use it to limit Android repository access to only a few people within your organization (please refer to your Google NDA for potential contractual restraints on sharing Android source access). </p>
<p>You may clone Google's repository to a local copy for sharing internally (see Git documentation for details).</p>
<a name="androidSourceSetupBuildGitSetupInstall"></a><h2>Installing and Configuring Git</h2>
<p>To install the Git package, execute:</p>
<pre class="prettyprint">
% sudo apt-get install git-core
</pre>
<a name="androidSourceSetupBuildGitSetupServer"></a><h2>Establishing Server Access</h2>
<p>Once Git is cleanly installed, you need to establish a connection with Google's Git server, a connection that requires an RSA key in order to authenticate requests.</p>
<a name="androidSourceSetupBuildGitSetupServerRSAKeys"></a><h3>Generating RSA Keys</h3>
<p>Each developer must have a unique RSA key in order to access Android source code. To generate an RSA key: </p>
<p>
<ol>
<li>Type:<br/>
<pre class="prettyprint">% ssh-keygen -t rsa -C email@domain.com</pre><br/>
You must use a valid email address to create your key.</li>
<li>When prompted, indicate the file to which you wish to write your key (<code>id_rsa</code> in this example).</li>
<li>When prompted, associate a passphrase with your key.</li>
<li>Upon success, you should have two files saved to the designated directory: </li>
<ul>
<li><code>id_rsa</code>: This file contains the private half of your RSA key. You shouldn't share this file with anyone. </li>
<li><code>id_rsa.pub</code>: This is the public half or your RSA key and you should send it to your Google technical account manager.</li>
</ul>
</ol>
</p>
<p>Send your Google Account Manager your public key file in order to establish Git server access. </p>
<a name="androidSourceSetupBuildGitSetupServerVerifyConnection"></a><h3>Verifying a Connection to the Git Server</h3>
<p>Once you have generated an RSA key and shared the public file with Google, you can test your connection with the Git server with the following command:</p>
<pre class="prettyprint">
% ssh android-git.ext.google.com
</pre>
<p>You should receive one of the following results:</p>
<table border=1 cellpadding=2 cellspacing=0>
<tbody><tr>
<th scope="col">Result</th>
<th scope="col">Cause</th>
<th scope="col">Action</th>
</tr>
<tr>
<td>
<code>fatal: What do you think I am? A shell?<BR>
Connection to android-git closed.</code>
</pre> </td>
<td>Success</td>
<td>None. You successfully connected to the Git server. (You should not have shell access and it's expected to receive this error.)</td>
</tr>
<tr>
<td>ssh hangs and eventually times out. </td>
<td>Your setup is failing to locate and establish a basic connection. </td>
<td>Google needs to debug network settings. </td>
</tr>
<tr>
<td>Error: Permission denied &lt;public key&gt; </td>
<td>Either you are not using the matching username or the RSA private key does not match the public key. </td>
<td>Try executing:<BR>
<code>
% ssh $USER@android-
git.ext.google.com
</code></td>
</tr>
</table>
<a name="androidSourceSetupGetCode"></a><h2>Downloading Code</h2>
<p>Android source code is maintained in two repositories: <code>device</code> and <code>kernel</code>. The <code>device</code> repository includes the Android framework (things like the Activity Manager, Window Manager, Telephony Manager, View System, etc.). The <code>kernel</code> repository includes the core code necessary to run the operating system (things like the Display Driver, Camera Driver, Keypad Driver, Power Management, etc.). (Please see <a href="http://code.google.com/android/what-is-android.html">What is Android?</a> for details.)</p>
<p>Save device and kernel code at the same directory level, for example:</p>
<p>
<ul><li><code>/home/joe/android/device</code></li>
<li><code>/home/joe/android/kernel</code></li>
</ul></p>
<p><b>Device Code</b></p>
<p>To download device code, you need your username and a unique <code>&lt;path&gt;</code> string supplied by Google to execute the following:</p>
<pre class="prettyprint">
% git-clone $USER@android-git.ext.google.com:&lt;path&gt;/device.git
</pre>
<p><b>Kernel Code</b></p>
<p>To download kernel code, you need your username and a unique <code>&lt;path&gt;</code> string supplied by Google to execute the following:</p>
<pre class="prettyprint">
% git-clone $USER@android-git.ext.google.com:&lt;path&gt;/kernel.git
</pre>
<a name="androidSourceSetupExtractingPatch"></a><h2>Extracting an Android Patch</h2>
<p>You likely already have Linux running on your platform and only need to integrate Android-specific changes. The following directions describe how to extract an Android patch.</p>
<ol>
<li>Download a generic version of the Linux kernel that matches the Linux version downloaded with the Android Kernel code.</li>
<li>Run <code>diff</code> on the two kernel packages to get Android-specific changes.</li>
<li>Apply the patch to your target kernel and build.</li>
</ol>