Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 1 | page.title=Compatibility Program Overview |
| 2 | @jd:body |
| 3 | |
| 4 | <!-- |
Clay Murphy | 1d5f8fe | 2015-05-18 16:44:07 -0700 | [diff] [blame] | 5 | Copyright 2015 The Android Open Source Project |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 6 | |
| 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 Murphy | 468ba57 | 2015-04-13 18:25:11 -0700 | [diff] [blame] | 19 | <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 Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 26 | |
| 27 | <p>The Android compatibility program makes it easy for mobile device |
| 28 | manufacturers to develop compatible Android devices.</p> |
Clay Murphy | 468ba57 | 2015-04-13 18:25:11 -0700 | [diff] [blame] | 29 | <h2 id="program-goals">Program goals</h2> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 30 | <p>The Android compatibility program works for the benefit of the entire |
| 31 | Android community, including users, developers, and device manufacturers.</p> |
| 32 | <p>Each group depends on the others. Users want a wide selection of devices |
| 33 | and great apps; great apps come from developers motivated by a large market |
| 34 | for their apps with many devices in users' hands; device manufacturers rely |
| 35 | on a wide variety of great apps to increase their products' value for |
| 36 | consumers.</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 |
| 41 | developers.</em> |
| 42 | Without a strong compatibility standard, devices can vary so |
| 43 | greatly that developers must design different versions of their applications |
| 44 | for different devices. The compatibility program provides a precise definition |
| 45 | of what developers can expect from a compatible device in terms of APIs and |
| 46 | capabilities. Developers can use this information to make good design |
| 47 | decisions, and be confident that their apps will run well on any compatible |
| 48 | device.</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 |
| 53 | any other device that is compatible with the same Android platform version. |
| 54 | Android devices will differ in hardware and software capabilities, so the |
| 55 | compatibility program also provides the tools needed for distribution systems |
Clay Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 56 | such as Google Play to implement appropriate filtering. This means |
| 57 | users see only the applications they can actually run.</p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 58 | </li> |
| 59 | <li> |
| 60 | <p><em>Enable device manufacturers to differentiate while being |
| 61 | compatible.</em> |
| 62 | The Android compatibility program focuses on the aspects of |
| 63 | Android relevant to running third-party applications, which allows device |
| 64 | manufacturers the flexibility to create unique devices that are nonetheless |
| 65 | compatible.</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 Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 70 | device manufacturers. The testing tool is free, open source, and |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 71 | available for <a href="downloads.html">download</a>. |
Clay Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 72 | It is designed to be used for continuous self-testing |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 73 | during the device development process to eliminate the cost of changing your |
| 74 | workflow or sending your device to a third party for testing. Meanwhile, there |
| 75 | are no required certifications, and thus no corresponding costs and |
| 76 | fees.</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 Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 82 | <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 Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 84 | </ul> |
| 85 | <p>Just as each version of the Android platform exists in a separate branch in |
| 86 | the source code tree, there is a separate CTS and CDD for each version as |
| 87 | well. The CDD, CTS, and source code are -- along with your hardware and your |
| 88 | software customizations -- everything you need to create a compatible device.</p> |
Clay Murphy | 468ba57 | 2015-04-13 18:25:11 -0700 | [diff] [blame] | 89 | <h2 id="compatibility-definition-document-cdd">Compatibility Definition Document</h2> |
Clay Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 90 | <p>For each release of the Android platform, a detailed CDD will be provided. The CDD represents the "policy" |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 91 | aspect of Android compatibility.</p> |
| 92 | <p>No test suite, including CTS, can truly be comprehensive. For instance, the |
| 93 | CTS includes a test that checks for the presence and correct behavior of |
| 94 | OpenGL graphics APIs, but no software test can verify that the graphics |
| 95 | actually appear correctly on the screen. More generally, it's impossible to |
| 96 | test the presence of hardware features such as keyboards, display density, |
Clay Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 97 | Wi-Fi, and Bluetooth.</p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 98 | <p>The CDD's role is to codify and clarify specific requirements, and |
| 99 | eliminate ambiguity. The CDD does not attempt to be comprehensive. Since |
| 100 | Android is a single corpus of open-source code, the code itself is the |
| 101 | comprehensive "specification" of the platform and its APIs. The CDD acts as a |
Clay Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 102 | "hub" referencing other content (such as SDK API documentation) that provides |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 103 | a framework in which the Android source code may be used so that the end |
| 104 | result is a compatible system.</p> |
| 105 | <p>If you want to build a device compatible with a given Android version, |
| 106 | start by checking out the source code for that version, and then read the |
| 107 | corresponding CDD and stay within its guidelines. For additional details, |
Clay Murphy | 6cd229b | 2013-11-27 16:42:03 -0800 | [diff] [blame] | 108 | simply examine <a href="/compatibility/android-cdd.pdf">the latest CDD</a>.</p> |
Clay Murphy | 468ba57 | 2015-04-13 18:25:11 -0700 | [diff] [blame] | 109 | <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, |
| 111 | available for <a href="downloads.html">download</a>. |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 112 | The CTS represents the "mechanism" of compatibility.</p> |
| 113 | <p>The CTS runs on a desktop machine and executes test cases directly on |
| 114 | attached devices or an emulator. The CTS is a set of unit tests designed to be |
| 115 | integrated into the daily workflow (such as via a continuous build system) of |
| 116 | the engineers building a device. Its intent is to reveal incompatibilities |
| 117 | early on, and ensure that the software remains compatible throughout the |
| 118 | development process.</p> |
Clay Murphy | 468ba57 | 2015-04-13 18:25:11 -0700 | [diff] [blame] | 119 | <h2 id="compatibility-test-suite-verifier-cts-verifier">Compatibility Test Suite Verifier (CTS Verifier)</h2> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 120 | <p>The Compatibility Test Suite Verifier (CTS Verifier) is a supplement to the |
Clay Murphy | 710b665 | 2014-01-06 16:04:37 -0800 | [diff] [blame] | 121 | CTS available for <a href="downloads.html">download</a>. |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 122 | CTS Verifier provides tests for APIs and functions that cannot be tested on a |
| 123 | stationary device without manual input (e.g. audio quality, accelerometer, etc).</p> |
Clay Murphy | 468ba57 | 2015-04-13 18:25:11 -0700 | [diff] [blame] | 124 | <p>For details on the CTS, consult the <a href="cts/index.html">CTS introduction</a>.</p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 125 | |
| 126 | |