Home | History | Annotate | Download | only in arc
      1 page.title=App Manifest Compatibility for Chromebooks
      2 @jd:body
      3 
      4 <div id="qv-wrapper">
      5     <div id="qv">
      6       <h2>On this page</h2>
      7 
      8       <ol>
      9         <li><a href="#incompat-entries">Incompatible Manifest Entries</a></li>
     10         <li>
     11           <a href="#implied-features">Permissions That Imply Feature
     12           Requirements</a>
     13         </li>
     14       </ol>
     15     </div>
     16   </div>
     17 
     18 <p>
     19 As you prepare your Android app to run on Chromebooks, you should consider the
     20 device features that your app uses. Chromebooks don't support all of the
     21 hardware and software features that are available on other devices running
     22 Android. If your app requires specific features that aren't supported on
     23 Chromebooks, it won't be available for installation on Chromebooks.
     24 </p>
     25 
     26 <p>
     27 You declare your app's requirements for hardware features and certain software
     28 features in the <a
     29 href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest file</a>.
     30 This document describes the app manifest feature declarations that aren't
     31 compatible with Chromebooks.
     32 </p>
     33 
     34 <h2 id="incompat-entries">Incompatible Manifest Entries</h2>
     35 
     36 <p>
     37 The manifest entries listed in this section aren't currently compatible with
     38 Chromebooks. If your app uses any of these entries, consider removing them or
     39 including the <code>required="false"</code> attribute value with them so that
     40 your app can be installed on Chromebooks. For more information about declaring
     41 feature use without requiring that the feature be available on the device, see
     42 the guide for the <a
     43 href="{@docRoot}guide/topics/manifest/uses-feature-element.html#market-feature-filtering">
     44 <code>&lt;uses-feature&gt;</code></a> manifest element.
     45 </p>
     46 
     47 <p class="note"><strong>Note</strong>: See the <a
     48 href="{@docRoot}guide/topics/manifest/uses-feature-element.html#features-reference">
     49 Features Reference</a> for a complete list of app manifest features and
     50 descriptions.
     51 </p>
     52 
     53 <h3 id="incompat-hardware-features">Hardware features</h3>
     54 
     55 <p>
     56 Support for hardware features varies on Chromebooks. Some features aren't
     57 supported on any Chromebooks while others are supported on some Chromebooks.
     58 </p>
     59 
     60 <h4>Unsupported hardware features</h4>
     61 
     62 <p>
     63 The following list includes the hardware features that aren't currently
     64 supported on Chromebooks:
     65 </p>
     66 
     67 <ul>
     68   <li>
     69     <code>android.hardware.camera</code> &ndash; Back-facing camera
     70   </li>
     71   <li>
     72     <code>android.hardware.camera.autofocus</code> &ndash; Camera that uses
     73     autofocus
     74   </li>
     75   <li>
     76     <code>android.hardware.camera.capability.manual_post_processing</code>&nbsp;
     77     &ndash; Camera that uses the <code>MANUAL_POST_PROCESSING</code> feature,
     78     including functionality for overriding auto white balance
     79   </li>
     80   <li>
     81     <code>android.hardware.camera.capability.manual_sensor</code> &ndash; Camera
     82     that uses the <code>MANUAL_SENSOR</code> feature, including auto-exposure
     83     locking support
     84   </li>
     85   <li>
     86     <code>android.hardware.camera.capability.raw</code> &ndash; Camera that uses
     87     the <code>RAW</code> feature, including the ability to save DNG (raw) files
     88     and provide DNG-related metadata
     89   </li>
     90   <li>
     91     <code>android.hardware.camera.flash</code> &ndash; Camera that uses flash
     92   </li>
     93   <li>
     94     <code>android.hardware.camera.level.full</code> &ndash; Camera that uses
     95     <code>FULL</code>-level image-capturing support
     96   </li>
     97   <li>
     98     <code>android.hardware.consumerir</code> &ndash; Infrared (IR)
     99   </li>
    100   <li>
    101     <code>android.hardware.location.gps</code> &ndash; GPS
    102   </li>
    103   <li>
    104     <code>android.hardware.nfc</code> &ndash; Near-Field Communication (NFC)
    105   </li>
    106   <li>
    107     <code>android.hardware.nfc.hce</code> &ndash; NFC card emulation
    108     (<em>deprecated</em>)
    109   </li>
    110   <li>
    111     <code>android.hardware.sensor.barometer</code> &ndash; Barometer (air
    112     pressure)
    113   </li>
    114   <li>
    115     <code>android.hardware.telephony</code> &ndash; Telephony, including radio
    116     with data communication services
    117   </li>
    118   <li>
    119     <code>android.hardware.telephony.cdma</code> &ndash; Telephony Code Division
    120     Multiple Access (CDMA) network support
    121   </li>
    122   <li>
    123     <code>android.hardware.telephony.gsm</code> &ndash; Telephony Global System
    124     for Mobile Communications (GSM) network support
    125   </li>
    126   <li>
    127     <code>android.hardware.type.automotive</code> &ndash; Android Auto user
    128     interface
    129   </li>
    130   <li>
    131     <code>android.hardware.type.television</code> &ndash; Television
    132     (<em>deprecated</em>)
    133   <li>
    134     <code>android.hardware.usb.accessory</code> &ndash; USB accessory mode
    135   </li>
    136   <li>
    137     <code>android.hardware.usb.host</code> &ndash; USB host mode
    138   </li>
    139 </ul>
    140 
    141 <h4>Partially-supported hardware features</h4>
    142 
    143 <p>
    144 The following list includes the hardware features that may be available on some
    145 Chromebooks:
    146 </p>
    147 
    148 <ul>
    149   <li>
    150     <code>android.hardware.sensor.accelerometer</code> &ndash; Accelerometer
    151     (device orientation)
    152   </li>
    153   <li>
    154     <code>android.hardware.sensor.compass</code> &ndash; Compass
    155   </li>
    156   <li>
    157     <code>android.hardware.sensor.gyroscope</code> &ndash; Gyroscope (device
    158     rotation and twist)
    159   </li>
    160   <li>
    161     <code>android.hardware.sensor.light</code> &ndash; Light
    162   </li>
    163   <li>
    164     <code>android.hardware.sensor.proximity</code> &ndash; Proximity (to user)
    165   </li>
    166   <li>
    167     <code>android.hardware.sensor.stepcounter</code> &ndash; Step counter
    168   </li>
    169   <li>
    170     <code>android.hardware.sensor.stepdetector</code> &ndash; Step detector
    171   </li>
    172 </ul>
    173 
    174 <h4>Touchscreen hardware support</h4>
    175 
    176 <p>
    177 As of Chrome OS version M53, all Android apps that don't explicitly require the
    178 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#touchscreen-hw-features">
    179 <code>android.hardware.touchscreen</code></a> feature will also work on Chrome
    180 OS devices that support the <a
    181 href="{@docRoot}guide/topics/manifest/uses-feature-element.html#touchscreen-hw-features">
    182 <code>android.hardware.faketouch</code></a> feature. Devices that have fake
    183 touch interfaces provide a user input system that emulates basic touch events.
    184 For example, the user could interact with a mouse or remote control to move an
    185 on-screen cursor, scroll through a list, and drag elements from one part of the
    186 screen to another.
    187 </p>
    188 
    189 <p>
    190 If you don't want your app to be installed on devices that have fake touch
    191 interfaces but not touchscreens, you can complete one of the following actions:
    192 </p>
    193 
    194 <ul>
    195   <li>Exclude specific devices in the <a class="external-link"
    196   href="https://play.google.com/apps/publish">Google Play Developer Console.</a>
    197   </li>
    198   <li>Filter devices with no touchscreen hardware by explicitly declaring <a
    199   href="{@docRoot}guide/topics/manifest/uses-feature-element.html#touchscreen-hw-features">
    200   <code>android.hardware.touchscreen</code></a> as being required in order to
    201   install your app.</li>
    202 </ul>
    203 
    204 <h3 id="incompat-software-features">Software features</h3>
    205 
    206 <p>
    207 The following list includes the software features that aren't currently
    208 supported on Chromebooks:
    209 </p>
    210 
    211 <ul>
    212   <li>
    213     <code>android.software.app_widgets</code> &ndash; App Widgets on the Home
    214     screen
    215   </li>
    216   <li>
    217     <code>android.software.device_admin</code> &ndash; Device policy
    218     administration
    219   </li>
    220   <li>
    221     <code>android.software.home_screen</code> &ndash; Replaces device's Home
    222     screen
    223   </li>
    224   <li>
    225     <code>android.software.input_methods</code> &ndash; Custom input methods
    226     (instances of <a href="{@docRoot}reference/android/inputmethodservice/InputMethodService.html">
    227     <code>InputMethodService</code></a>)
    228   </li>
    229   <li>
    230     <code>android.software.leanback</code> &ndash; UI designed for large-screen
    231     viewing
    232   </li>
    233   <li>
    234     <code>android.software.live_wallpaper</code> &ndash; Animated wallpapers
    235   </li>
    236   <li>
    237     <code>android.software.live_tv</code> &ndash; Streaming live TV programs
    238   </li>
    239   <li>
    240     <code>android.software.managed_users</code> &ndash; Secondary users and
    241     managed profiles
    242   </li>
    243   <li>
    244     <code>android.software.midi</code> &ndash; Musical Instrument Digital
    245     Interface (MIDI) protocol, which supports connecting to musical instruments
    246     and providing sound
    247   </li>
    248   <li>
    249     <code>android.software.sip</code> &ndash; Session Initiation Protocol (SIP)
    250     service, which supports video conferencing and instant messaging
    251   </li>
    252   <li>
    253     <code>android.software.sip.voip</code> &ndash; Voice Over Internet Protocol
    254     (VoIP) service based on SIP, which supports two-way video conferencing
    255   </li>
    256 </ul>
    257 
    258 <h2 id="implied-features">Permissions That Imply Feature Requirements</h2>
    259 
    260 <p>
    261 Some permissions that you request in your manifest files can create implied
    262 requests for hardware and software features. By requesting these permissions,
    263 you'll prevent your app from being installed on Chromebooks.
    264 </p>
    265 
    266 <p>
    267 For details about how to prevent permission requests from making your app
    268 unavailable on Chromebooks, see the <a href="#incompat-entries">Incompatible
    269 Manifest Entries</a> section of this page.
    270 </p>
    271 
    272 <p>
    273 The following table shows the permissions that imply certain feature
    274 requirements which make an app incompatible with Chromebooks:
    275 </p>
    276 
    277 <p class="table-caption">
    278 <strong>Table 1. </strong>Device permissions that imply hardware features which
    279 are incompatible with Chromebooks.
    280 </p>
    281 
    282 <table>
    283   <tr>
    284     <th scope="col">Category</th>
    285     <th scope="col">This Permission...</th>
    286     <th scope="col">...Implies This Feature Requirement</th>
    287   </tr>
    288   <tr>
    289     <td>Camera</td>
    290     <td><code>CAMERA</code></td>
    291     <td>
    292       <code>android.hardware.camera</code> and<br>
    293       <code>android.hardware.camera.autofocus</code>
    294     </td>
    295   </tr>
    296   <tr>
    297     <td rowspan="11">Telephony</td>
    298     <td><code>CALL_PHONE</code></td>
    299     <td><code>android.hardware.telephony</code></td>
    300   </tr>
    301   <tr>
    302     <td><code>CALL_PRIVILEGED</code></td>
    303     <td><code>android.hardware.telephony</code></td>
    304   </tr>
    305   <tr>
    306     <td><code>MODIFY_PHONE_STATE</code></td>
    307     <td><code>android.hardware.telephony</code></td>
    308   </tr>
    309   <tr>
    310     <td><code>PROCESS_OUTGOING_CALLS</code></td>
    311     <td><code>android.hardware.telephony</code></td>
    312   </tr>
    313   <tr>
    314     <td><code>READ_SMSREAD_SMS</code></td>
    315     <td><code>android.hardware.telephony</code></td>
    316   </tr>
    317   <tr>
    318     <td><code>RECEIVE_SMS</code></td>
    319     <td><code>android.hardware.telephony</code></td>
    320   </tr>
    321   <tr>
    322     <td><code>RECEIVE_MMS</code></td>
    323     <td><code>android.hardware.telephony</code></td>
    324   </tr>
    325   <tr>
    326     <td><code>RECEIVE_WAP_PUSH</code></td>
    327     <td><code>android.hardware.telephony</code></td>
    328   </tr>
    329   <tr>
    330     <td><code>SEND_SMS</code></td>
    331     <td><code>android.hardware.telephony</code></td>
    332   </tr>
    333   <tr>
    334     <td><code>WRITE_APN_SETTINGS</code></td>
    335     <td><code>android.hardware.telephony</code></td>
    336   </tr>
    337   <tr>
    338     <td><code>WRITE_SMS</code></td>
    339     <td><code>android.hardware.telephony</code></td>
    340   </tr>
    341 </table>
    342