blob: f86b56805a356e9286c857f7574953617285a567 [file] [log] [blame]
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Android - Porting Guide</title>
<script src="http://www.google.com/uds/api?file=uds.js&amp;v=1.0&amp;key=internal-codesite" type="text/javascript"></script>
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
<script language="JavaScript">
function resizeHeight() {
if(document.getElementById && !(document.all)) {
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
document.getElementById('doxygen').style.height = height;
}
else if(document.all) {
height= document.frames('doxygen').document.body.scrollHeight + 20;
document.all.doxygen.style.height = height;
}
}
</script>
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
</link>
<!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]-->
<script src="http://code.google.com/android/assets/search_autocomplete.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.google.com/css/semantic_headers.css" />
<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css" />
<script>
jQuery(document).ready(function() {
jQuery("pre").addClass("prettyprint");
});
</script>
<style type="text/css">
<!--
h1,h2,h3 {
color: #000000;
}
-->
</style>
</head>
<body class="gc-documentation">
<div id="gc-container">
<a name="top"></a>
<div id="skipto"> </div>
<div id="langpref">
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
</div>
<div id="gc-header">
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
<div id="search" style="inline">
<div id="searchForm" class="searchForm" style="height: 44px;">
<!--previously form was here-->
</div>
<!-- end searchForm -->
<noscript>
<style type="text/css">
.searchForm {
display : none !important;
}
.searchForm2 {
display : inline !important;
}
</style>
</noscript>
<div id="searchForm2" class="searchForm2" style="display:none">
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
<input type="hidden" name="cof" value="FORID:0" />
<input type="text" name="q" maxlength="2048" size="41" autocomplete="off" title="Google Code Search"/>
<input type="submit" name="sa" value="Search" title="Search"/>
<br/>
<div class="greytext">e.g. "ajax apis" or "open source"</div>
</form>
</div>
<!-- end searchForm2 -->
</div>
<!-- end search -->
</div>
<!-- end gc-header -->
<div id="searchControl" class="search-control"></div>
<!--[if IE]><iframe id="backiFrame" name="backiFrame" src='/dummy.html' style="display:none"></iframe><![endif]-->
<div id="codesiteContent">
<a name="gc-topnav-anchor"></a>
<div id="gc-topnav">
<h1>Android Platform Development Kit</h1>
<ul class="gc-topnav-tabs">
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20index.html%20v0.5%20-%2025%20September%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
</ul>
</div>
<!-- end gc-topnav -->
<div class="g-section g-tpl-180">
<a name="gc-toc"></a>
<div class="g-unit g-first" id="gc-toc">
<ul>
<li>
<h1><a href="index.html">Documentation</a></h1>
<ul>
<li> <strong>Introduction</strong>
<ul>
<li><a href="system_requirements.html">Device Requirements</a></li>
</ul>
</li>
<li> <strong>Dev Environment Setup</strong>
<ul>
<li><a href="source_setup_guide.html">Host System Setup</a></li>
<li><a href="getting_source_code.html">Getting Source Code</a></li>
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
<li><a href="build_system.html">Build System</a></li>
</ul>
</li>
<li> <strong>Basic Bring up</strong>
<ul>
<li><a href="build_new_device.html">Building New Device</a></li>
<li><a href="bring_up.html">Bring up</a></li>
<li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
<li><a href="display_drivers.html">Display Drivers</a></li>
</ul>
</li>
<li> <strong>Multimedia</strong>
<ul>
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
<li><a href="camera.html">Camera</a></li>
</ul>
</li>
<li> <strong>Power Management</strong>
<ul>
<li><a href="power_management.html">Power Management</a></li>
</ul>
</li>
<li> <strong>Networking</strong>
<ul>
<li><a href="wifi.html">Wi-Fi</a></li>
<li><a href="gps.html">GPS</a></li>
<li><a href="bluetooth.html">Bluetooth</a></li>
</ul>
</li>
<li> <strong>Telephony</strong>
<ul>
<li><a href="telephony.html">Radio Interface Layer</a></li>
</ul>
</li>
<li> <strong>Testing</strong>
<ul>
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<a name="gc-pagecontent"></a>
<div class="g-unit" id="gc-pagecontent">
<div id="jd-content">
<div class="jd-descr">
<a name="androidIntroSourceCodeTitle"></a><h1>Source Code Overview</h1>
<a name="toc"/>
<div style="padding:10px">
<a href="#androidSourceCodeDirectories">Introduction</a><br/>
<a href="#Android_Source">Android Source</a><br/><div style="padding-left:40px">
<a href="#androidSourceCodeDirectoriesKernel">Linux Kernel</a><br/>
<a href="#androidSourceCodeDirectoriesDevice">Android Platform and Applications</a><br/></div>
<a href="#androidSourceGuidelines">Adding Source Code</a><br/></div></font></div>
<a name="androidSourceCodeDirectories"></a><h2>Introduction</h2>
<p>Android source code is maintained in two code bases: the Android Linux kernel (<code>kernel</code> directory) and Android platform and applications (<code>device</code> directory). This document provides a high-level introduction to the source code organization and an overview of the major components of each primary directory.</p>
<a name="Android_Source"></a><h2>Android Source</h2>
<a name="androidSourceCodeDirectoriesKernel"></a><h3>Linux Kernel</h3>
<p>The Android Linux kernel includes enhancements to the Linux 2.6 kernel that provide additional drivers to support the Android platform, including:</p>
<ul>
<li>Binder: an OpenBinder-based driver to facilitate inter-process communication (IPC) in the Android platform.</li>
<li>Android Power Management: a light weight power management driver built on top of standard Linux power management but optimized for embedded systems.</li>
<li>Low Memory Killer: Based on hints from the userspace, the low memory killer can kill off processes to free up memory as necessary. It is designed to provide more flexibility than the Out Of Memory (OOM) killer in the standard kernel.</li>
<li>Logger: A light weight logging device used to capture system, radio, logdata, etc.</li>
<li>USB Gadget: Uses the USB function framework.</li>
<li>Android/PMEM: The PMEM (physical memory) driver is used to provide contiguous physical memory regions to userspace libraries that interact with the digital signal processor (DSP) and other hardware that cannot cope with scatter-gather.</li>
<li>Android Alarm: A driver which provides timers that can wake the device up from sleep and a monotonic timebase that runs while the device is asleep.</li>
</ul>
<p>Look for Android-specific enhancements in the following directories:</p>
<p><ul>
<li><code>/drivers/android</code></li>
<li><code>/drivers/misc</code></li>
<li><code>/include/linux</code></li>
</ul>
</p>
<a name="androidSourceCodeDirectoriesDevice"></a><h3>Android Platform and Applications</h3>
<p>The following list outlines the directory structure found within the <code>device</code> branch of Android source code:</p>
<p><span class="lh2"><a name="gmapiMobileTagsListStart"></a></span>
<ul>
<li>apps
Core Android applications such as Phone, Camera, and Calendar.
</li>
<li>boot
Reference Android bootloader and other boot-related source code.
</li>
<li>commands
Common Android commands, the most important of which is the runtime command, which does much of the initialization of the system.
</li>
<li>config
System-wide makefiles and linker scripts.
</li>
<li>content
Standard Android ContentProvider modules.
</li>
<li>dalvik
Android runtime Virtual Machine (VM).
</li>
<li>data
Fonts, keymaps, sounds, timezone information, etc.
</li>
<li>docs
Full set of Android documentation.
</li>
<li>extlibs
Non-Android libraries. This directory is intended to host unmodified external code. None of the libraries included within this directory rely on Android headers or libraries.
</li>
<li>ide
Tools for support of the IDE's used to write Android applications.
</li>
<li>include
Android system headers for inclusion.
</li>
<li>java
Android core APIs, as well as some external libraries.
</li>
<li>libs
Android-specific C++ based libraries.
</li>
<li>partner
Project-specific source code for various proprietary components.
</li>
<li>prebuilt
Prebuilt tools, like the toolchains and emulator binary.
</li>
<li>product
Device-specific configuration files. This directory will include a subdirectory for each new device.
</li>
<li>samples
Sample applications.
</li>
<li>servers
C++ based system servers.
</li>
<li>system
Core of the embedded Linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging.
</li>
<li>tests
Platform and application test cases.
</li>
<li>tools
Tools for building and debugging Android (of particular interest for porting are "adb" and "emulator").
</li>
<p><span class="lh2"><a name="gmapiMobileTagsListEnd"></a></span>
</ul>
<a name="androidSourceGuidelines"></a><h2>Adding Source Code</h2>
<p>You can develop Android applications with the same standard tools you use to develop any Java application. The Android core libraries provide the functionality needed to build rich mobile applications and the Android development tools are designed to simplify running, debugging, and testing your applications.</p>
<p>Add project-specific source code to the Android source tree under the <code>partner</code> directory in a directory specific to the application or service you are building. For example, all Google-specific applications would be placed under <code>device/partner/google/</code>. A Google search application would be placed under <code>device/partner/google/apps/Search</code>.
<p>See <a href="build_new_device.html">Building Android for a new Mobile Device</a> for detailed instructions.</p>
<p><span class="lh2"><a name="androidFooter"></a></span>
</div>
</div>
<!-- end gc-pagecontent -->
</div>
<!-- end gooey wrapper -->
</div>
<!-- end codesearchresults -->
<div id="gc-footer" dir="ltr">
<div class="text"> &copy;2008 Google<!-- - <a href="/">Code Home</a> - <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> - <a href="http://www.google.com/privacy.html">Privacy Policy</a> - <a href="/more">Site Directory</a> --></div>
</div>
<!-- end gc-footer -->
</div>
<!-- end gc-containter -->
<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-18071-1");
pageTracker._setAllowAnchor(true);
pageTracker._initData();
pageTracker._trackPageview();
} catch(e) {}
</script>
<div id="jd-build-id"> v0.5 - 25 September 2008</div>
</div></div></div></body>
</html>