Last updated: December 2, 2025
2. Device Types
2.2. Handheld Requirements
2.2.1. Hardware
If handheld device implementations declare support of any 64-bit ABI
(with or without any 32-bit ABI) and return false for
ActivityManager.isLowRamDevice(), they:
- [7.1.4.2/H-2-1] MUST support Vulkan 1.1.
2.2.3. Software
An app's Live Update Notification can be promoted when the app meets all the promotion characteristics. Such notification is described as Promoted Live Update Notification in this document. Handheld device implementations MUST prominently display Promoted Live Update Notification per the following requirements.
If Handheld device implementations declare API level 36.1 or greater, they:
[3.8.3.1/H-0-1] MUST display a Promoted Live Update Notification in a prominent place on the lockscreen.
[3.8.3.1/H-0-12] MUST display at the top of the notification stack Heads Up Notification and above colorized notifications (where
setColorizedistrue) when the Promoted Live Update Notification is displayed among other notifications.- MAY determine the order sequence of Promoted Live Update Notifications displayed within notification shade and lock screen when more than one app is eligible for Promoted Live Update Notification.
[3.8.3.1/H-0-2] MUST display a Promoted Live Update Notification in the expanded state.
[3.8.3.1/H-0-3] MUST NOT provide a user-affordance to collapse the expanded notification above.
[3.8.3.1/H-0-4] MUST display the basic styles (bold, italic, and underline) of text content in a Promoted Live Update Notification, as provided by
StyleSpanorUnderlineSpan.[3.8.3.1/H-0-5] MUST display only standard action objects (via
Notification.Action), and MUST hide non-standard action objects such as input boxes, reply buttons, and contextual actions (viaaddRemoteInput()andsetContextual()) in a Promoted Live Update Notification, even when the notification contains them.[3.8.3.1/H-0-6] MUST display a Compact Representation, also referred to as Status Chip in the SDK documentation, for a Promoted Live Update Notification that MUST include
Notification.getSmallIcon().[3.8.3.1/H-0-7] Other fields are optional for the Compact Representation, but whenever the compact representation can be expanded, MUST display
Notification.getShortCriticalText()if present, orNotification.whenifNotification.getShortCriticalTextisn't present.[3.8.3.1/H-0-8] When more than one Promoted Live Update notifications are present, MUST display at least one of them in the status bar as a Compact Representation.
[3.8.3.1/H-0-9] MUST either show the associated notification (preferred) or open the associated app (via
Notification.contentIntent), when the user taps on the Compact Representation.[3.8.3.1/H-0-13] MUST display all the same content in the associated notification as the one that is available in the notification shade.
[3.8.3.1/H-0-10] MUST provide a user affordance to disable and enable the promoted display of individual app's notifications.
[3.8.3.1/H-0-11] MUST correctly render all Live Update Notifications, including but not limited to non-promoted Live Update Notifications that don't or only partially meet the promotion characteristics. Such non-promoted notifications MUST be displayed in a non-promoted state.
2.2.5. Security Model
If device implementations declare support for android.hardware.telephony,
they:
- [9.5/H-1-1] MUST NOT set
UserManager.isHeadlessSystemUserModetotrue.
2.5. Automotive Requirements
2.5.1. Hardware
Automotive device implementations:
- [7.1.1.1/A-0-3] MUST support GPU composition of graphic buffers at least as large as the highest resolution of any built-in display.
If Automotive device implementations include support for Vulkan, they:
- [7.1.4.2/A-1-1] MUST satisfy the requirements specified by the Android Baseline 2021 profile.
If Automotive device implementations claim support for high dynamic range
displays through Configuration.isScreenHdr(),
they:
- [7.1.4.5/A-1-1] MUST advertise support for the
EGL_EXT_gl_colorspace_bt2020_pq,EGL_EXT_surface_SMPTE2086_metadata,EGL_EXT_surface_CTA861_3_metadata,VK_EXT_swapchain_colorspace, andVK_EXT_hdr_metadataextensions.
Automotive device implementations:
- [7.1.4.6/A-0-1] MUST report whether the device
supports the GPU profiling capability via a system property
graphics.gpu.profiler.support.
If Automotive device implementations declare support via a system property
graphics.gpu.profiler.support, they:
[7.1.4.6/A-1-1] MUST report as output a protobuf trace that complies with the schema for GPU counters and GPU RenderStages defined in the Perfetto documentation.
[7.1.4.6/A-1-2] MUST report conformant values for the device's GPU counters following the
gpu counter tracepacket proto.[7.1.4.6/A-1-3] MUST report conformant values for the device's GPU RenderStages following the render stage trace packet proto.
[7.1.4.6/A-1-4] MUST report a GPU Frequency tracepoint as specified by the format: power/gpu_frequency.
Automotive device implementations:
- [7.1.5/A-0-1] MUST include support for legacy app compatibility mode as implemented by the upstream Android open source code. That is, device implementations MUST NOT alter the triggers or thresholds at which compatibility mode is activated, and MUST NOT alter the behavior of the compatibility mode itself.
If Automotive device implementations include a USB port with a controller operating in peripheral mode, they:
- [7.7.1/A-1-1] MUST implement the Android Open Accessory (AOA) API.
If Automotive device implementations include a USB port supporting host mode, they:
- [7.7.2/A-1-1] MUST implement the USB audio class as described in the Android SDK documentation.
When the AudioManager.getDevices() API is called while the USB peripheral
is connected, it:
[7.8.2.2/A-1-1] MUST list a device of type
AudioDeviceInfo.TYPE_USB_HEADSETand roleisSink()if the USB audio terminal type field is0x0302.[7.8.2.2/A-1-2] MUST list a device of type
AudioDeviceInfo.TYPE_USB_HEADSETand roleisSink()if the USB audio terminal type field is0x0402.[7.8.2.2/A-1-3] MUST list a device of type
AudioDeviceInfo.TYPE_USB_HEADSETand roleisSink()if the USB audio terminal type field is0x0603.[7.8.2.2/A-1-4] MUST list a device of type
AudioDeviceInfo.TYPE_USB_HEADSETand roleisSink()if the USB audio terminal type field is0x0400.
2.5.3. Software
Automotive device implementations:
- [3.2.3.1/A-0-2]
MUST have an app that handles the
ACTION_GET_CONTENT,ACTION_OPEN_DOCUMENT,ACTION_OPEN_DOCUMENT_TREE, andACTION_CREATE_DOCUMENTintents as described in the SDK documents, and provide the user affordance to access the document provider data by usingDocumentsProviderAPI.
If Automotive device implementation's settings application implements a split functionality, using activity embedding, they:
- [3.2.3.1/A-1-1] MUST have an activity
that handles the
Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITYintent when split functionality is on. The Activity MUST be protected byandroid.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK, and it MUST start the activity of the Intent parsed fromSettings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI.
If Automotive device implementations allow users to place calls of any sort, they:
[7.4.1.2/A-1-1] MUST declare the feature flag
android.software.telecom.[7.4.1.2/A-1-2] MUST implement the telecom framework.
2.5.4. Performance and Power
[8.1/A-0-1] Consistent frame latency. Inconsistent frame latency or a delay to render frames MUST NOT happen more often than 5 frames in a second, and SHOULD be below 1 frame in a second.
[8.1/A-0-2] User interface latency. Device implementations MUST ensure low latency user experience by scrolling a list of 10K list entries as defined by the Android Compatibility Test Suite (CTS) in less than 36 seconds.
[8.1/A-0-3] Task switching. When multiple apps have been launched, re-launching an already-running application after it has been launched MUST take less than 1 second.
Automotive device implementations:
If Automotive device implementations return
android.os.Build.VERSION_CODES.U
or greater for android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS, they:
[8.2/A-1-1] MUST ensure a sequential write performance of at least 150 MB/s.
[8.2/A-1-2] MUST ensure a random write performance of at least 10 MB/s.
[8.2/A-1-3] MUST ensure a sequential read performance of at least 250 MB/s.
[8.2/A-1-4] MUST ensure a random read performance of at least 100 MB/s.
[8.2/A-1-5] MUST ensure a parallel sequential read and write performance with 2x read and 1x write performance of at least 50 MB/s.
2.5.5. Security Model
If Automotive device implementations support multiple users, they:
If Automotive device implementations support the System API
VisualQueryDetectionService or another mechanism for query detection without
mic and/or camera access indication, they:
[9.8/A-1-1] MUST make sure the query detection service can only transmit data to the System,
ContentCaptureService, or on-device speech recognition service (created bySpeechRecognizer#createOnDeviceSpeechRecognizer()).[9.8/A-1-2] MUST NOT allow any audio or video information to be transmitted out of the
VisualQueryDetectionService, except toContentCaptureServiceor on-device speech recognition service.[9.8/A-1-3] MUST display a user notice in System UI when the device detects user intent to engage with the Digital Assistant Application (such as by detecting user presence via camera).
[9.8/A-1-4] MUST display a microphone indicator and display the detected user query in the UI immediately after the user query is detected.
[9.8/A-1-5] MUST NOT allow a user-installable application to provide the visual query detection service.
3. Software
3.4. Web Compatibility
3.4.1. WebView Compatibility
If device implementations provide a complete implementation of the
android.webkit.Webview API, they:
[C-1-3] The user agent string reported by the WebView for apps targeting SDK level 35 and lower MUST be in the following format:
Mozilla/5.0 (Linux; Android $(VERSION); \[$(MODEL)\] \[Build/$(BUILD)\]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36The value of the
$(VERSION)string MUST be the same as the value forandroid.os.Build.VERSION.RELEASE.The
$(MODEL)string MAY be empty, but if not empty it MUST have the same value asandroid.os.Build.MODEL."Build/$(BUILD)" MAY be omitted, but if present the
$(BUILD)string MUST be the same as the value forandroid.os.Build.ID.The value of the
$(CHROMIUM_VER)string MUST be the version of Chromium in the upstream Android Open Source Project.Device implementations MAY omit Mobile in the user agent string.
3.8. User Interface Compatibility
3.8.14. Multi-windows
- [C-1-2] MUST honor
android:resizeableActivitythat is set by an app in theAndroidManifest.xmlfile as described in this SDK.
3.9. Device Administration
3.9.1. Device Provisioning
3.9.1.2. Managed profile provisioning
If device implementations declare android.software.managed_users, they:
- [C-1-1] MUST
declare
android.software.device_adminand implement the APIs allowing a Device Policy Controller (DPC) application to become the owner of a new Managed Profile.
3.9.4. Device Policy Management Role Requirements
If device implementations declare android.software.device_admin
or , they:android.software.managed_users
- [C-1-1] MUST support the device policy management role as defined in
section 9.1. The application that holds the device policy management role
MAY be defined by setting
config_devicePolicyManagementto the package name. The package name MUST be followed by a colon (:) and the signing certificate, unless the application is preloaded.
3.9.5. Device Policy Resolution Framework
If device implementations declare android.software.device_admin
or , they:android.software.managed_users
- [C-1-1] MUST resolve device policy conflicts as documented in Device Policy Resolution Framework.
3.18. Contacts
Custom local account: an account for raw contacts that are only stored on
the device and not associated with an Account in the AccountManager, which are
created with at least one non-null
values for both
the ACCOUNT_NAME
and ACCOUNT_TYPE
columns.
If device implementations use a custom local account:
- [C-1-3] Raw contacts that are inserted by third party applications with
the default local account (i.e. by setting null values for
ACCOUNT_NAMEandACCOUNT_TYPE) MUST be inserted to the custom local account.
- [C-1-3] Raw contacts inserted by third-party applications without
specifying an account MUST be inserted to the device's default contact
account. If the default contact account is
DEFAULT_ACCOUNT_STATE_LOCALorDEFAULT_ACCOUNT_STATE_NOT_SET, these raw contacts MUST be stored in the custom local account.
5. Multimedia Compatibility
5.1. Media Codecs
5.1.3. Audio Codecs Details
| Format/Codec | Details | File Types/Container Formats to be supported |
|---|---|---|
| G.711 μ-law and A-law | Support for mono/stereo/5.1 content sampled at 8 kHz |
|
| MPEG-4 AAC Profile (AAC LC) |
Support for mono/stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz. |
|
| MPEG-4 HE AAC Profile (AAC+) | Support for mono/stereo/5.0/5.1 content with standard sampling rates from 16 to 48 kHz. |
|
| MPEG-4 HE AACv2 Profile (enhanced AAC+) |
Support for mono/stereo/5.0/5.1 content with standard sampling rates from 16 to 48 kHz. |
|
| AAC ELD (enhanced low delay AAC) | Support for mono/stereo content with standard sampling rates from 16 to 48 kHz. |
|
| USAC | Support for mono/stereo content with standard sampling rates from 7.35 to 48 kHz. | MPEG-4 (.mp4, .m4a) |
| AMR-NB | 4.75 to 12.2 kbps sampled @ 8 kHz | 3GPP (.3gp) |
| AMR-WB | 9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16 kHz, as defined at AMR-WB, Adaptive Multi-Rate - Wideband Speech Codec | 3GPP (.3gp) |
| FLAC | For both encoder and decoder: at least Mono and Stereo modes MUST be supported. Sample rates up to 192 kHz MUST be supported; 16-bit and 24-bit resolution MUST be supported. FLAC 24-bit audio data handling MUST be available with floating point audio configuration. |
|
| MP3 | Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR) |
|
| MIDI | MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody |
|
| Vorbis | Decoding: Support for mono, stereo, 5.0 and 5.1 content with sampling
rates of 8000, 12000, 16000, 24000, and 48000 Hz. Encoding: Support for mono and stereo content with sampling rates of 8000, 12000, 16000, 24000, and 48000 Hz. |
|
| PCM/WAVE | PCM codec MUST support 16-bit linear PCM and 16-bit float. WAVE extractor must support 16-bit, 24-bit, 32-bit linear PCM and 32-bit float (rates up to limit of hardware). Sampling rates MUST be supported from 8 kHz to 192 kHz. | WAVE (.wav) |
| Opus | Decoding: Support for mono, stereo, 5.0 and 5.1 content
with sampling rates of 8000, 12000, 16000, 24000, and 48000 Hz.
Encoding: Support for mono and stereo content with sampling rates of 8000, 12000, 16000, 24000, and 48000 Hz. |
|
5.5. Audio Playback
5.5.4. Audio Offload
If device implementations support audio offload playback, they:
- [C-SR-2] Are STRONGLY RECOMMENDED to implement offload playback for AAC, MP3, OPUS, and PCM formats.
5.6. Audio Playback
| Device and Declarations | RTL (ms) | MAD (ms) | Loopback Paths |
|---|---|---|---|
| Handheld | speaker/mic, analog 3.5mm (if supported), USB (if supported) | ||
| >= MPC_T (13) | 80 | 15 | at least one path |
| FEATURE_AUDIO_LOW_LATENCY | 50 | 10 | at least one path |
| FEATURE_AUDIO_PRO | 25 | 5 | at least one path |
| FEATURE_AUDIO_PRO | 20 | 5 | analog (if supported) |
| FEATURE_AUDIO_PRO | 25 | 5 | USB (if analog not supported) |
5.12. HDR Video
If device implementation includes codecs that support FEATURE_HdrEditing, then
the device:
HDR Display Requirements
If device implementations receive buffer content encoded with
ADATASPACE_TRANSFER_HLG, and that content is sent to the display through
SurfaceControl.Transaction#setBuffer,
they:
- [C-8-1] MUST follow the graphics white recommendation in BT. 2408-7, and only display that content to be at most greater than 4.926 times of SDR content.
6. Developer Tools and Options Compatibility
6.1. Developer Tools
Device implementations:
- [C-0-10] MUST record, without omission, and make the following events
accessible and available to the
cmd statsshell command and theStatsManagerSystem API class.- ActivityForegroundStateChanged
- AnomalyDetected
- AppBreadcrumbReported
- AppCrashOccurred
- AppStartOccurred
- BatteryLevelChanged
- BatterySaverModeStateChanged
- BleScanResultReceived
- BleScanStateChanged
- ChargingStateChanged
- DeviceIdleModeStateChanged
- ForegroundServiceStateChanged
- GpsScanStateChanged
- InputDeviceUsageReported
- JobStateChanged
- KeyboardConfigured
- KeyboardSystemsEventReported
- PluggedStateChanged
- PressureStallInformation
- ScheduledJobStateChanged
- ScreenStateChanged
- SyncStateChanged
- SystemElapsedRealtime
- TouchpadUsage
- UidProcessStateChanged
- WakelockStateChanged
- WakeupAlarmOccurred
- WifiLockStateChanged
- WifiMulticastLockStateChanged
- WifiScanStateChanged
7. Hardware Compatibility
7.1. Display and Graphics
7.1.3. Screen Orientation
If device implementations support both screen orientations, they:
- [C-1-1] MUST support dynamic orientation by applications to either portrait or landscape screen orientation. That is, the device must respect the application's request for a specific screen orientation.
7.3. Sensors
7.3.5. Barometer
Device implementations that declare the system property
sensor.barometer.high_quality.implemented:
[C-2-1] MUST report pressure measurements in the range of 300 hPa to 1100 hPa, with an absolute accuracy of +/- 1 hPa.
[C-2-2] MUST have a relative accuracy of 0.15 hPa over a 100 hPa range, equivalent to ~1 m accuracy over ~1000 m change at sea level.
[C-2-3] MUST be stable within +/- 0.5 hPa when the user taps, presses, or squeezes the device.
[C-2-4] MUST be stable within +/- 0.15 hPa when the user walks with the device in hand or in pocket.
[C-2-5] MUST NOT be smoothed with a time constant of more than 300 ms for activations above 5 Hz, and smoothing MUST NOT leak across sensor activations.
[C-2-6] MUST be stable within +/- 0.15 hPa when exposed to day-to-day lighting and radio frequencies introduced by common sources such as Bluetooth, cellular connection, or Wi-Fi.
7.3.14. Custom sensors [new section]
To help provide a differentiated experience, device implementations MAY include additional sensors not covered by Android or Wear OS, which preloaded apps may access.
For such sensors, the sensor ID:
- [C-0-1] MUST be higher than 65536.
If the custom sensor is intended for health or fitness related purposes, it:
- [C-0-2] MUST be protected by either a platform permission or system permission.
7.4. Data Connectivity
7.4.3. Bluetooth
If device implementations declare FEATURE_BLUETOOTH_LE, they:
If device implementations declare FEATURE_BLUETOOTH_LE_CHANNEL_SOUNDING, they:
[C-11-1] MUST report the hardware feature flag
android.hardware.bluetooth_le.channel_sounding.[C-11-2] MUST report the range accurately to within +/- 0.5 m at the 90th percentile, as calculated with the Cumulative Distribution Function, at the distance of 1 m.
7.5. Cameras
If device implementations include at least one camera, and the pre-installed
camera application handles the intents MediaStore.ACTION_MOTION_PHOTO_CAPTURE
or MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE, they:
[C-1-4] MUST ensure that when handling these intents, the pre-installed camera app removes the user location in the image metadata before sending it to receiving applications that don't have
ACCESS_FINE_LOCATION.[C-1-5] MUST ensure that the returned motion photo uses the Motion Photo format 1.0 specification.
9. Security Model Compatibility
9.1. Permissions
If devices include data sensors exposing health-related biometrics such as heart rate or skin temperature, those biometrics:
[C-0-16] MUST be guarded by platform permissions from
android.permission-group.HEALTH, if there's a corresponding permission inHealthPermissions.[C-0-17] MUST, if no platform permission matches the desired data type, be guarded by a custom system permission. (For example,
ELECTROCARDIOGRAM.)
If devices report android.software.managed_users, they:
[C-1-1] MUST NOT have the following permissions silently granted by the admin:
- Location (
ACCESS_BACKGROUND_LOCATION,ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION). - Camera (
CAMERA) - Microphone (
RECORD_AUDIO) - Body sensor (
BODY_SENSORS) - Health (
HealthPermissions) - Physical activity (
ACTIVITY_RECOGNITION)
- Location (
9.5. Multi-User Support
If device implementations create the additional user profile discussed above,
they include at least one camera, and the pre-installed camera application
handles the intents MediaStore.ACTION_MOTION_PHOTO_CAPTURE or
MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE, they:
- [C-5-1] MUST allow applications of the primary user to handle these intents originating from that additional user profile.
9.7. Security Features
Kernel integrity and self-protection features are integral to Android security. Device implementations:
- [C-0-8] MUST implement strict kernel memory protections where executable
code is read-only, read-only data is non-executable, and non-writable, and
writable data is non-executable
(e.g.(for example, bothCONFIG_DEBUG_RODATAorCONFIG_STRICT_KERNEL_RWX)rodataandCONFIG_STRICT_KERNEL_RWXare enabled).
9.8. Privacy
9.8.2. Recording
Device implementations:
- [C-0-2] MUST display a user warning and obtain explicit user consent
allowing any sensitive information that is displayed on the user's screen to
be captured each and every time a session to capture the screen
casting or screen recording is
startedenabled viatheMediaProjection.createVirtualDisplay(),VirtualDeviceManager.createVirtualDisplay(),MediaProjection.createVirtualDisplay()or proprietary APIs.
- [C-0-4] MUST NOT provide users an affordance to disable future prompts of
the user consent to capture the screen, unless the session is started by a
system app that the user has allowed to
associate()with theandroid.app.role.COMPANION_DEVICE_APP_STREAMINGor theandroid.app.role.COMPANION_DEVICE_NEARBY_DEVICE_STREAMINGdevice profile.
9.11. Keys and Credentials
When the device implementation supports a secure lock screen, it:
[C-1-6] MUST support one of the following:
- IKeymasterDevice 3.0,
- IKeymasterDevice 4.0,
- IKeymasterDevice 4.1,
- IKeyMintDevice version 1, or
- IKeyMintDevice version 2.
- [C-1-6] MUST support IKeymasterDevice 3.0 or higher, or IKeyMintDevice version 1 or higher.
- [C-SR-1] Is STRONGLY RECOMMENDED to support IKeyMintDevice version 1.
9.11.1. Secure Lock Screen, Authentication, and Virtual Devices
If device implementations allow applications to create secondary virtual displays and support associated input events, such as via VirtualDeviceManager, they:
[C-10-2] MUST disconnect all virtual devices upon idle timeout
[C-10-3] MUST have an idle timeout
[C-10-7] MUST either:
- Disable clipboard usage
- Enable a separate clipboard for each device that supports clipboards
- [C-10-15] MUST show notifications when clipboard data is accessed across devices, and MUST make content inaccessible after one minute measured from the initial sharing time.
- [C-10-15] MUST show notifications when clipboard data is accessed on both the device it was accessed from and on the device fromwhich the clipboard originated.
9.18. Developer Verification [new section]
Device implementations declaring API level 36.1 or greater:
- MAY include support for a developer verifier service to certify that applications originate from a known developer.
Device implementations declaring API level 36.1 or greater
and configure a developer verifier by defining
config_developerVerificationServiceProviderPackageName in config.xml:
- [9.18/C-1-1] MUST invoke the configured
android.content.pm.verify.developer.DeveloperVerifierServicefor every application package installation, which includes both new installations and updates to existing applications.
Device implementations declaring API level 36.1 or greater:
- MAY also configure a delegate for setting the active policy by defining
config_developerVerificationPolicyDelegatePackageNameinconfig.xml.
If a developer verifier is configured, device implementations:
- [9.18/C-2-1] MUST only allow the developer verifier or its configured
delegate to set the installation policy as defined in
android.content.pm.PackageInstaller.
If a verifier is invoked as part of a package installation session, device implementations:
[9.18/C-3-1] MUST prevent the installation of an application package if:
- The installation fails the developer identity verification.
- The developer verification policy for the installation session is set
to any value other than
DEVELOPER_VERIFICATION_POLICY_NONE. - Unless either 9.18/C-3-2 or 9.18/C-3-3 apply.
[9.18/C-3-2] MUST NOT prevent the installation of an application package regardless of policy or verification status when:
- The package is installed via the Android Debug Bridge (ADB).
- The package is the configured developer verifier or its installer.
[9.18/C-3-3] MUST NOT prevent the installation of an application package when all following conditions are met:
- Policy is set to
DEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_WARNorDEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_OPEN. - The verification is reported as incomplete.
- The installer indicates the user explicitly requested the
installation continue by reporting
DEVELOPER_VERIFICATION_USER_RESPONSE_INSTALL_ANYWAY.
- Policy is set to
MAY allow the installation of an application package regardless of policy or verification status for installations initiated by the device owner on a managed device or the profile owner on a managed profile, but it's STRONGLY RECOMMENDED to prevent installations as outlined in 9.18/C-3-1.