Home | History | Annotate | Download | only in compatibility
      1 page.title=Compatibility Program Overview
      2 @jd:body
      3 
      4 <!--
      5     Copyright 2015 The Android Open Source Project     
      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 -->
     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>
     26 
     27 <p>The Android compatibility program makes it easy for mobile device
     28 manufacturers to develop compatible Android devices.</p>
     29 <h2 id="program-goals">Program goals</h2>
     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
     56 such as Google Play to implement appropriate filtering. This means
     57 users see only the applications they can actually run.</p>
     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
     70 device manufacturers. The testing tool is free, open source, and
     71 available for <a href="downloads.html">download</a>. 
     72 It is designed to be used for continuous self-testing
     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>
     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>
     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>
     89 <h2 id="compatibility-definition-document-cdd">Compatibility Definition Document</h2>
     90 <p>For each release of the Android platform, a detailed CDD will be provided. The CDD represents the "policy"
     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,
     97 Wi-Fi, and Bluetooth.</p>
     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
    102 "hub" referencing other content (such as SDK API documentation) that provides
    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,
    108 simply examine <a href="/compatibility/android-cdd.pdf">the latest CDD</a>.</p>
    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>.
    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>
    119 <h2 id="compatibility-test-suite-verifier-cts-verifier">Compatibility Test Suite Verifier (CTS Verifier)</h2>
    120 <p>The Compatibility Test Suite Verifier (CTS Verifier) is a supplement to the
    121 CTS available for <a href="downloads.html">download</a>.
    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>
    124 <p>For details on the CTS, consult the <a href="cts/index.html">CTS introduction</a>.</p>
    125 
    126 
    127