blob: 0a1bfcad548c65525268abdfca36a19ae6feddec [file] [log] [blame]
Robert Ly35f2fda2013-01-29 16:27:05 -08001page.title=Compatibility Program Overview
2@jd:body
3
4<!--
Clay Murphy1d5f8fe2015-05-18 16:44:07 -07005 Copyright 2015 The Android Open Source Project
Robert Ly35f2fda2013-01-29 16:27:05 -08006
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18-->
Clay Murphy468ba572015-04-13 18:25:11 -070019<div id="qv-wrapper">
20 <div id="qv">
21 <h2>In this document</h2>
22 <ol id="auto-toc">
23 </ol>
24 </div>
25</div>
Robert Ly35f2fda2013-01-29 16:27:05 -080026
27<p>The Android compatibility program makes it easy for mobile device
28manufacturers to develop compatible Android devices.</p>
Clay Murphy468ba572015-04-13 18:25:11 -070029<h2 id="program-goals">Program goals</h2>
Robert Ly35f2fda2013-01-29 16:27:05 -080030<p>The Android compatibility program works for the benefit of the entire
31Android community, including users, developers, and device manufacturers.</p>
32<p>Each group depends on the others. Users want a wide selection of devices
33and great apps; great apps come from developers motivated by a large market
34for their apps with many devices in users' hands; device manufacturers rely
35on a wide variety of great apps to increase their products' value for
36consumers.</p>
37<p>Our goals were designed to benefit each of these groups:</p>
38<ul>
39<li>
40<p><em>Provide a consistent application and hardware environment to application
41developers.</em>
42 Without a strong compatibility standard, devices can vary so
43greatly that developers must design different versions of their applications
44for different devices. The compatibility program provides a precise definition
45of what developers can expect from a compatible device in terms of APIs and
46capabilities. Developers can use this information to make good design
47decisions, and be confident that their apps will run well on any compatible
48device.</p>
49</li>
50<li>
51<p><em>Enable a consistent application experience for consumers.</em>
52 If an application runs well on one compatible Android device, it should run well on
53any other device that is compatible with the same Android platform version.
54Android devices will differ in hardware and software capabilities, so the
55compatibility program also provides the tools needed for distribution systems
Clay Murphy710b6652014-01-06 16:04:37 -080056such as Google Play to implement appropriate filtering. This means
57users see only the applications they can actually run.</p>
Robert Ly35f2fda2013-01-29 16:27:05 -080058</li>
59<li>
60<p><em>Enable device manufacturers to differentiate while being
61compatible.</em>
62 The Android compatibility program focuses on the aspects of
63Android relevant to running third-party applications, which allows device
64manufacturers the flexibility to create unique devices that are nonetheless
65compatible.</p>
66</li>
67<li>
68<p><em>Minimize costs and overhead associated with compatibility.</em>
69 Ensuring compatibility should be easy and inexpensive to
Clay Murphy710b6652014-01-06 16:04:37 -080070device manufacturers. The testing tool is free, open source, and
Robert Ly35f2fda2013-01-29 16:27:05 -080071available for <a href="downloads.html">download</a>.
Clay Murphy710b6652014-01-06 16:04:37 -080072It is designed to be used for continuous self-testing
Robert Ly35f2fda2013-01-29 16:27:05 -080073during the device development process to eliminate the cost of changing your
74workflow or sending your device to a third party for testing. Meanwhile, there
75are no required certifications, and thus no corresponding costs and
76fees.</p>
77</li>
78</ul>
79<p>The Android compatibility program consists of three key components:</p>
80<ul>
81<li>The source code to the Android software stack</li>
Clay Murphy710b6652014-01-06 16:04:37 -080082<li>The Compatilbility Definition Document (CDD), representing the "policy" aspect of compatibility</li>
83<li>The Compatilbility Test Suite (CTS), representing the "mechanism" of compatibility</li>
Robert Ly35f2fda2013-01-29 16:27:05 -080084</ul>
85<p>Just as each version of the Android platform exists in a separate branch in
86the source code tree, there is a separate CTS and CDD for each version as
87well. The CDD, CTS, and source code are -- along with your hardware and your
88software customizations -- everything you need to create a compatible device.</p>
Clay Murphy468ba572015-04-13 18:25:11 -070089<h2 id="compatibility-definition-document-cdd">Compatibility Definition Document</h2>
Clay Murphy710b6652014-01-06 16:04:37 -080090<p>For each release of the Android platform, a detailed CDD will be provided. The CDD represents the "policy"
Robert Ly35f2fda2013-01-29 16:27:05 -080091aspect of Android compatibility.</p>
92<p>No test suite, including CTS, can truly be comprehensive. For instance, the
93CTS includes a test that checks for the presence and correct behavior of
94OpenGL graphics APIs, but no software test can verify that the graphics
95actually appear correctly on the screen. More generally, it's impossible to
96test the presence of hardware features such as keyboards, display density,
Clay Murphy710b6652014-01-06 16:04:37 -080097Wi-Fi, and Bluetooth.</p>
Robert Ly35f2fda2013-01-29 16:27:05 -080098<p>The CDD's role is to codify and clarify specific requirements, and
99eliminate ambiguity. The CDD does not attempt to be comprehensive. Since
100Android is a single corpus of open-source code, the code itself is the
101comprehensive "specification" of the platform and its APIs. The CDD acts as a
Clay Murphy710b6652014-01-06 16:04:37 -0800102"hub" referencing other content (such as SDK API documentation) that provides
Robert Ly35f2fda2013-01-29 16:27:05 -0800103a framework in which the Android source code may be used so that the end
104result is a compatible system.</p>
105<p>If you want to build a device compatible with a given Android version,
106start by checking out the source code for that version, and then read the
107corresponding CDD and stay within its guidelines. For additional details,
Clay Murphy6cd229b2013-11-27 16:42:03 -0800108simply examine <a href="/compatibility/android-cdd.pdf">the latest CDD</a>.</p>
Clay Murphy468ba572015-04-13 18:25:11 -0700109<h2 id="compatibility-test-suite-cts">Compatibility Test Suite</h2>
110<p>The <a href="cts/index.html">CTS</a> is a free, commercial-grade test suite,
111available for <a href="downloads.html">download</a>.
Robert Ly35f2fda2013-01-29 16:27:05 -0800112The CTS represents the "mechanism" of compatibility.</p>
113<p>The CTS runs on a desktop machine and executes test cases directly on
114attached devices or an emulator. The CTS is a set of unit tests designed to be
115integrated into the daily workflow (such as via a continuous build system) of
116the engineers building a device. Its intent is to reveal incompatibilities
117early on, and ensure that the software remains compatible throughout the
118development process.</p>
Clay Murphy468ba572015-04-13 18:25:11 -0700119<h2 id="compatibility-test-suite-verifier-cts-verifier">Compatibility Test Suite Verifier (CTS Verifier)</h2>
Robert Ly35f2fda2013-01-29 16:27:05 -0800120<p>The Compatibility Test Suite Verifier (CTS Verifier) is a supplement to the
Clay Murphy710b6652014-01-06 16:04:37 -0800121CTS available for <a href="downloads.html">download</a>.
Robert Ly35f2fda2013-01-29 16:27:05 -0800122CTS Verifier provides tests for APIs and functions that cannot be tested on a
123stationary device without manual input (e.g. audio quality, accelerometer, etc).</p>
Clay Murphy468ba572015-04-13 18:25:11 -0700124<p>For details on the CTS, consult the <a href="cts/index.html">CTS introduction</a>.</p>
Robert Ly35f2fda2013-01-29 16:27:05 -0800125
126