Bug: 30114799 Change-Id: I9b8d67d09e4627f22a9fc58421dd52aa3650c235 (cherry picked from commit 97a3d3c3a626656a1b3ae61dcf380ac993ff6ca8)
342 lines
11 KiB
Plaintext
342 lines
11 KiB
Plaintext
page.title=App Manifest Compatibility for Chromebooks
|
|
@jd:body
|
|
|
|
<div id="qv-wrapper">
|
|
<div id="qv">
|
|
<h2>On this page</h2>
|
|
|
|
<ol>
|
|
<li><a href="#incompat-entries">Incompatible Manifest Entries</a></li>
|
|
<li>
|
|
<a href="#implied-features">Permissions That Imply Feature
|
|
Requirements</a>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<p>
|
|
As you prepare your Android app to run on Chromebooks, you should consider the
|
|
device features that your app uses. Chromebooks don't support all of the
|
|
hardware and software features that are available on other devices running
|
|
Android. If your app requires specific features that aren't supported on
|
|
Chromebooks, it won't be available for installation on Chromebooks.
|
|
</p>
|
|
|
|
<p>
|
|
You declare your app's requirements for hardware features and certain software
|
|
features in the <a
|
|
href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest file</a>.
|
|
This document describes the app manifest feature declarations that aren't
|
|
compatible with Chromebooks.
|
|
</p>
|
|
|
|
<h2 id="incompat-entries">Incompatible Manifest Entries</h2>
|
|
|
|
<p>
|
|
The manifest entries listed in this section aren't currently compatible with
|
|
Chromebooks. If your app uses any of these entries, consider removing them or
|
|
including the <code>required="false"</code> attribute value with them so that
|
|
your app can be installed on Chromebooks. For more information about declaring
|
|
feature use without requiring that the feature be available on the device, see
|
|
the guide for the <a
|
|
href="{@docRoot}guide/topics/manifest/uses-feature-element.html#market-feature-filtering">
|
|
<code><uses-feature></code></a> manifest element.
|
|
</p>
|
|
|
|
<p class="note"><strong>Note</strong>: See the <a
|
|
href="{@docRoot}guide/topics/manifest/uses-feature-element.html#features-reference">
|
|
Features Reference</a> for a complete list of app manifest features and
|
|
descriptions.
|
|
</p>
|
|
|
|
<h3 id="incompat-hardware-features">Hardware features</h3>
|
|
|
|
<p>
|
|
Support for hardware features varies on Chromebooks. Some features aren't
|
|
supported on any Chromebooks while others are supported on some Chromebooks.
|
|
</p>
|
|
|
|
<h4>Unsupported hardware features</h4>
|
|
|
|
<p>
|
|
The following list includes the hardware features that aren't currently
|
|
supported on Chromebooks:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<code>android.hardware.camera</code> – Back-facing camera
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.camera.autofocus</code> – Camera that uses
|
|
autofocus
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.camera.capability.manual_post_processing</code>
|
|
– Camera that uses the <code>MANUAL_POST_PROCESSING</code> feature,
|
|
including functionality for overriding auto white balance
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.camera.capability.manual_sensor</code> – Camera
|
|
that uses the <code>MANUAL_SENSOR</code> feature, including auto-exposure
|
|
locking support
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.camera.capability.raw</code> – Camera that uses
|
|
the <code>RAW</code> feature, including the ability to save DNG (raw) files
|
|
and provide DNG-related metadata
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.camera.flash</code> – Camera that uses flash
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.camera.level.full</code> – Camera that uses
|
|
<code>FULL</code>-level image-capturing support
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.consumerir</code> – Infrared (IR)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.location.gps</code> – GPS
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.nfc</code> – Near-Field Communication (NFC)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.nfc.hce</code> – NFC card emulation
|
|
(<em>deprecated</em>)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.barometer</code> – Barometer (air
|
|
pressure)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.telephony</code> – Telephony, including radio
|
|
with data communication services
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.telephony.cdma</code> – Telephony Code Division
|
|
Multiple Access (CDMA) network support
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.telephony.gsm</code> – Telephony Global System
|
|
for Mobile Communications (GSM) network support
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.type.automotive</code> – Android Auto user
|
|
interface
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.type.television</code> – Television
|
|
(<em>deprecated</em>)
|
|
<li>
|
|
<code>android.hardware.usb.accessory</code> – USB accessory mode
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.usb.host</code> – USB host mode
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Partially-supported hardware features</h4>
|
|
|
|
<p>
|
|
The following list includes the hardware features that may be available on some
|
|
Chromebooks:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<code>android.hardware.sensor.accelerometer</code> – Accelerometer
|
|
(device orientation)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.compass</code> – Compass
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.gyroscope</code> – Gyroscope (device
|
|
rotation and twist)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.light</code> – Light
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.proximity</code> – Proximity (to user)
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.stepcounter</code> – Step counter
|
|
</li>
|
|
<li>
|
|
<code>android.hardware.sensor.stepdetector</code> – Step detector
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Touchscreen hardware support</h4>
|
|
|
|
<p>
|
|
As of Chrome OS version M53, all Android apps that don't explicitly require the
|
|
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#touchscreen-hw-features">
|
|
<code>android.hardware.touchscreen</code></a> feature will also work on Chrome
|
|
OS devices that support the <a
|
|
href="{@docRoot}guide/topics/manifest/uses-feature-element.html#touchscreen-hw-features">
|
|
<code>android.hardware.faketouch</code></a> feature. Devices that have fake
|
|
touch interfaces provide a user input system that emulates basic touch events.
|
|
For example, the user could interact with a mouse or remote control to move an
|
|
on-screen cursor, scroll through a list, and drag elements from one part of the
|
|
screen to another.
|
|
</p>
|
|
|
|
<p>
|
|
If you don't want your app to be installed on devices that have fake touch
|
|
interfaces but not touchscreens, you can complete one of the following actions:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>Exclude specific devices in the <a class="external-link"
|
|
href="https://play.google.com/apps/publish">Google Play Developer Console.</a>
|
|
</li>
|
|
<li>Filter devices with no touchscreen hardware by explicitly declaring <a
|
|
href="{@docRoot}guide/topics/manifest/uses-feature-element.html#touchscreen-hw-features">
|
|
<code>android.hardware.touchscreen</code></a> as being required in order to
|
|
install your app.</li>
|
|
</ul>
|
|
|
|
<h3 id="incompat-software-features">Software features</h3>
|
|
|
|
<p>
|
|
The following list includes the software features that aren't currently
|
|
supported on Chromebooks:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<code>android.software.app_widgets</code> – App Widgets on the Home
|
|
screen
|
|
</li>
|
|
<li>
|
|
<code>android.software.device_admin</code> – Device policy
|
|
administration
|
|
</li>
|
|
<li>
|
|
<code>android.software.home_screen</code> – Replaces device's Home
|
|
screen
|
|
</li>
|
|
<li>
|
|
<code>android.software.input_methods</code> – Custom input methods
|
|
(instances of <a href="{@docRoot}reference/android/inputmethodservice/InputMethodService.html">
|
|
<code>InputMethodService</code></a>)
|
|
</li>
|
|
<li>
|
|
<code>android.software.leanback</code> – UI designed for large-screen
|
|
viewing
|
|
</li>
|
|
<li>
|
|
<code>android.software.live_wallpaper</code> – Animated wallpapers
|
|
</li>
|
|
<li>
|
|
<code>android.software.live_tv</code> – Streaming live TV programs
|
|
</li>
|
|
<li>
|
|
<code>android.software.managed_users</code> – Secondary users and
|
|
managed profiles
|
|
</li>
|
|
<li>
|
|
<code>android.software.midi</code> – Musical Instrument Digital
|
|
Interface (MIDI) protocol, which supports connecting to musical instruments
|
|
and providing sound
|
|
</li>
|
|
<li>
|
|
<code>android.software.sip</code> – Session Initiation Protocol (SIP)
|
|
service, which supports video conferencing and instant messaging
|
|
</li>
|
|
<li>
|
|
<code>android.software.sip.voip</code> – Voice Over Internet Protocol
|
|
(VoIP) service based on SIP, which supports two-way video conferencing
|
|
</li>
|
|
</ul>
|
|
|
|
<h2 id="implied-features">Permissions That Imply Feature Requirements</h2>
|
|
|
|
<p>
|
|
Some permissions that you request in your manifest files can create implied
|
|
requests for hardware and software features. By requesting these permissions,
|
|
you'll prevent your app from being installed on Chromebooks.
|
|
</p>
|
|
|
|
<p>
|
|
For details about how to prevent permission requests from making your app
|
|
unavailable on Chromebooks, see the <a href="#incompat-entries">Incompatible
|
|
Manifest Entries</a> section of this page.
|
|
</p>
|
|
|
|
<p>
|
|
The following table shows the permissions that imply certain feature
|
|
requirements which make an app incompatible with Chromebooks:
|
|
</p>
|
|
|
|
<p class="table-caption">
|
|
<strong>Table 1. </strong>Device permissions that imply hardware features which
|
|
are incompatible with Chromebooks.
|
|
</p>
|
|
|
|
<table>
|
|
<tr>
|
|
<th scope="col">Category</th>
|
|
<th scope="col">This Permission...</th>
|
|
<th scope="col">...Implies This Feature Requirement</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Camera</td>
|
|
<td><code>CAMERA</code></td>
|
|
<td>
|
|
<code>android.hardware.camera</code> and<br>
|
|
<code>android.hardware.camera.autofocus</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td rowspan="11">Telephony</td>
|
|
<td><code>CALL_PHONE</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>CALL_PRIVILEGED</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>MODIFY_PHONE_STATE</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>PROCESS_OUTGOING_CALLS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>READ_SMSREAD_SMS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>RECEIVE_SMS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>RECEIVE_MMS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>RECEIVE_WAP_PUSH</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>SEND_SMS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>WRITE_APN_SETTINGS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>WRITE_SMS</code></td>
|
|
<td><code>android.hardware.telephony</code></td>
|
|
</tr>
|
|
</table>
|