• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!--
2   Copyright 2010 The Android Open Source Project
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15-->
16
17# Compatibility Program Overview #
18
19The Android compatibility program makes it easy for mobile device
20manufacturers to develop compatible Android devices.
21
22# Program goals #
23
24The Android compatibility program works for the benefit of the entire
25Android community, including users, developers, and device manufacturers.
26
27Each group depends on the others. Users want a wide selection of devices
28and great apps; great apps come from developers motivated by a large market
29for their apps with many devices in users' hands; device manufacturers rely
30on a wide variety of great apps to increase their products' value for
31consumers.
32
33Our goals were designed to benefit each of these groups:
34
35- *Provide a consistent application and hardware environment to application
36developers.*
37    Without a strong compatibility standard, devices can vary so
38greatly that developers must design different versions of their applications
39for different devices. The compatibility program provides a precise definition
40of what developers can expect from a compatible device in terms of APIs and
41capabilities. Developers can use this information to make good design
42decisions, and be confident that their apps will run well on any compatible
43device.
44
45- *Enable a consistent application experience for consumers.*
46    If an application runs well on one compatible Android device, it should run well on
47any other device that is compatible with the same Android platform version.
48Android devices will differ in hardware and software capabilities, so the
49compatibility program also provides the tools needed for distribution systems
50such as Google Play to implement appropriate filtering. This means that
51users can only see applications which they can actually run.
52
53- *Enable device manufacturers to differentiate while being
54compatible.*
55    The Android compatibility program focuses on the aspects of
56Android relevant to running third-party applications, which allows device
57manufacturers the flexibility to create unique devices that are nonetheless
58compatible.
59
60- *Minimize costs and overhead associated with compatibility.*
61    Ensuring compatibility should be easy and inexpensive to
62device manufacturers. The testing tool (CTS) is free, open source, and
63available for [download](downloads.html).
64CTS is designed to be used for continuous self-testing
65during the device development process to eliminate the cost of changing your
66workflow or sending your device to a third party for testing. Meanwhile, there
67are no required certifications, and thus no corresponding costs and
68fees.
69
70The Android compatibility program consists of three key components:
71
72- The source code to the Android software stack
73- The Compatilbility Definition Document, representing the "policy" aspect of compatibility
74- The Compatilbility Test Suite, representing the "mechanism" of compatibility
75
76Just as each version of the Android platform exists in a separate branch in
77the source code tree, there is a separate CTS and CDD for each version as
78well. The CDD, CTS, and source code are -- along with your hardware and your
79software customizations -- everything you need to create a compatible device.
80
81# Compatibility Definition Document (CDD) #
82
83For each release of the Android platform, a detailed Compatibility
84Definition Document (CDD) will be provided. The CDD represents the "policy"
85aspect of Android compatibility.
86
87No test suite, including CTS, can truly be comprehensive. For instance, the
88CTS includes a test that checks for the presence and correct behavior of
89OpenGL graphics APIs, but no software test can verify that the graphics
90actually appear correctly on the screen. More generally, it's impossible to
91test the presence of hardware features such as keyboards, display density,
92WiFi, and Bluetooth.
93
94The CDD's role is to codify and clarify specific requirements, and
95eliminate ambiguity.  The CDD does not attempt to be comprehensive. Since
96Android is a single corpus of open-source code, the code itself is the
97comprehensive "specification" of the platform and its APIs. The CDD acts as a
98"hub", referencing other content (such as SDK API documentation) that provides
99a framework in which the Android source code may be used so that the end
100result is a compatible system.
101
102If you want to build a device compatible with a given Android version,
103start by checking out the source code for that version, and then read the
104corresponding CDD and stay within its guidelines. For additional details,
105simply examine [the latest CDD](4.1/android-4.1-cdd.pdf).
106
107# Compatibility Test Suite (CTS) #
108
109The CTS is a free, commercial-grade test suite, available for
110[download](downloads.html).
111The CTS represents the "mechanism" of compatibility.
112
113The 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.
119
120
121# Compatibility Test Suite Verifier (CTS Verifier) #
122The Compatibility Test Suite Verifier (CTS Verifier) is a supplement to the
123Compatibility Test Suite (CTS), available for [download](downloads.html).
124CTS Verifier provides tests for APIs and functions that cannot be tested on a
125stationary device without manual input (e.g. audio quality, accelerometer, etc).
126
127For details on the CTS, consult the [CTS introduction](cts-intro.html).
128