blob: e6d7b152305aaeaba40ebc9d3df0733d9178014d [file] [log] [blame]
<html devsite>
<head>
<title>Android Interfaces and Architecture</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>Android gives you the freedom to implement your own device specifications and
drivers. The hardware abstraction layer (HAL) provides a standard method for
creating software hooks between the Android platform stack and your hardware.
The Android operating system is also open source, so you can contribute your own
interfaces and enhancements.</p>
<p>Before porting Android to your hardware, take a moment to understand the
<a href="/devices/architecture/index.html">Android system architecture</a>.
Because your drivers and the HAL interact with Android, knowing its structure
can help you navigate the many layers of code in the Android Open Source Project
(AOSP) source tree. When you are comfortable with the basic Android
architecture, review the interface-specific documentation in this section to
learn about specific HALs and how to build them for your device.</p>
<p>To maintain a high level of quality and offer a consistent user experience,
Android requires that all implementations meet the requirements stated in the
<a href="/compatibility/cdd.html">Compatibility Definition Document (CDD)</a>
and that all devices pass tests in the
<a href="/compatibility/cts.html">Compatibility Test Suite (CTS)</a>. For
details on the Android compatibility program, see
<a href="/compatibility/index.html">Compatibility</a>.</p>
</body>
</html>