SlideShare a Scribd company logo
ANDROID 10
Just the way you want it.
By/Praveen Kumar K
INTRODUTION
Android 10 is the tenth major release and the 17th version of the Android mobile operating system. It
was released on September 3, 2019 and centered on innovation, security and privacy and digital
wellbeing.

Simple,smarter . And more helpful

Supporting new technologies like Foldables and 5G

Powered by on -device Machine learning

New privacy and security features

Faster updates, fresher code
Highlights

Live Caption

Smart Reply

Sound Amplifier

Guesture Navigation

Dark Theme

Privacy Controls

Location Controls

Security updates

Focus Mode

Family Link
Domain wise Features
K
E
R
N
E
L
ABI monitoring utilities
ABI usage checker
Android Live-Lock Deamon
vDS032 on ARM64
Mounting patitions early
D
I
S
P
HDR video playback
Text Classification API updates
Support for Zawgyi font rendering
Limitations to hiding app icons
C
O
N
N
E
C
T
NFC: Secure NFC ,Android Beam deprecated
5G Non-Standalone (NSA)
phone account suggestion service
Android emergency location services
Supporting multiple eSIMs
WIFI- Passpoint R2 features,Wi-Fi Easy Connect,Wi-
Fi Low-Latency Mode,Score cards,
WPA3 and Wi-Fi Enhanced Open
H
I
D
L
/
H
A
L
Offload BroadcastQueue
SystemSuspend service
safe_union in HIDL
Hals Autoshutdown
G
R
A
P
H
I
C
S
ASurfaceControl
OpenGL ES layers
EGL 1.5
Vulkan 1.1
Performance refresh rate
U
P
D
A
T
E
S
APEX continer file format
Dynamic partitions
Dynamic system updates
Multiuser backup and restore
Overlayfs
Shared library support in recovery mode
User Data Checkpoint (UDC)
B
o
o
t
l
o
a
d
e
r
Root file system moved to
system img
Building ODM parititions
Boot_image_header_versioning
Recovery imges for non-A/B
devices
Stable AIDL
Moving fastboot to userspace
A
U
D
I
O
Audio HAL capabilities extn
Preprocessing effects
Refactor audio policy manager
High resolution audio
Concurrent capture
AudioPlaybackCapture API
MIDI
S
E
C
U
R
I
T
Y
New Face authentication stack
Extended access
Encryption - > uses OEM crypto API version 5
BoundSantizer,Integer Overflow Santizer,
scudo,ShadowCallback,Execute-Only memory
P
E
R
M
I
S
S
I
O
N
Contacts provider and affinities information
Tristate location permissions
Background location access reminder
Restrict opportunistic locations
Background apps launching
Restrict app clipboard access
Runtime permissions include activity recognition
Sharing API improvements
P
O
W
E
R
Doze mode extended
New battery saver schedule
Power stats HAL
Thermal mitigation C
A
M
E
R
A
Changes to the camera API/ camera
HAL/camera module
Camera framework privacy improvements
Session reconfiguration query
Camera HAL3 buffer management
APIs(Optional) Camera HAL dynamic
physical camera switch
Support for hiding physical cameras
Introduces a vendor-available library
HEIF imaging support
Monochrome cameras
C
O
N
F
Config HAL deprecated
config_file_schema_api
system_properties_as_apis
P
E
R
F
Cgroup abstraction layer
Low Memory killer Deamon
(lmkd)
O
T
H
E
R
S
Gestural navigation,Dark theme,Built-in Android Auto
Contaminant detection,Priotize/manage notifications
Updates to NN API
Sensors- HAL2.0 (Fast message queues) ,Sensors off
Modular system components
Java_sdk_library
KERNEL

ABI Monitoring utilities
Android 10 includes support for new ABI monitoring utilities to
help with comparing, tracking, and mitigating kernel ABI
changes that affect compatibility with kernel modules.

ABI usage checker
Android 10 introduces a symbol-based ABI usages checker. The
checker can detect outdated prebuilt binaries at build time, so
that shared library developers can know which prebuilt binaries
might be broken by their change and which prebuilt binaries
must be rebuilt.

Android Live-Lock Deamon
Android 10 includes the Android Live-Lock Daemon (llkd), which
is designed to catch and mitigate kernel deadlocks

vDS032 on ARM64:
Virtual dynamic shared object (vDSO) is an alternative to system
calls that, when used and configured correctly, can reduce cycle
costs. Android 10 adds support for vDSO32 on 64-bit kernels
(Android already supports vDSO64 on 64-bit kernels and
vDSO32 on 32-bit kernels). Using vDSO32
(CONFIG_VDSO_COMPAT) on ARM64 architecture provides a
0.4 percent increase in battery life and other performance
improvements.

Mounting patitions early
In Android 10 and higher, devices must specify fstab entries for
early mounted partitions using fstab file in the first stage ramdisk.
Android 10 introduces the following fs_mgr flags for use in the fstab
file:
first_stage_mount indicates that a partition will be mounted by the
first stage init. logical indicates that this is a . avb=vbmeta-partition-
name specifies the vbmeta partition. The first stage init initializes
this partition before mounting other partitions. The argument for
this flag can be omitted if the vbmeta partition for the entry has
already been specified by another fstab entry in a previous line.
The following example shows fstab entries to set the
dynamic partition system, vendor, and product partitions as logical
(dynamic) partitions.
#<dev> <mnt_point> <type> <mnt_flags options> <fs_mgr_flags>
system /system ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
vendor /vendor ext4 ro,barrier=1 wait,slotselect,avb=vbmeta,logical,first_stage_mount
product /product ext4 ro,barrier=1 wait,slotselect,avb,logical,first_stage_mount
In this example, the vendor specifies the vbmeta partition using the
fs_mgr flag avb=vbmeta, but product omits the vbmeta argument
because vendor has already added vbmeta to the list of partitions.
Devices running Android 10 and higher must place the fstab file in
the ramdisk and in the vendor partition.
BOOT LOADER

Root file system moved to system img
In Android 10, the root file system is no longer included in
ramdisk.img and is instead merged into system.img.

Building ODM parititions
Android 10 includes support for building odm partitions
using the Android build system. You can use a separate /odm
partition for customizations, which enables you to use a
single vendor image for multiple hardware SKUs. This
enables original design manufacturers (ODMs) to customize
system-on-chip (SoC) vendor board-support packages
(BSPs) to their specific devices (their boards). They can
implement kernel modules for board-specific components,
board-specific daemons, or their own features on hardware
abstraction layers (HALs). They may also replace or
customize SoC components.

Boot image header versioning
Android 10 updates the boot image header to version 2,
which includes a section to store the device tree blob (DTB)
image. Android 10 VTS tests verify that all devices launching
with Android 10 use boot image header version 2 and
include a valid DTB image as part of the boot/recovery
images.

Recovery images for non-A/B devices
In Android 9 and higher, a device's recovery image must
contain information from the overlay image. Device
manufacturers can use DeviceTree or Advanced
Configuration and Power Interface (ACPI) to describe all
nondiscoverable devices. Android 10 and higher includes
support for architectures that use ACPI instead of
DeviceTree blob for overlay (DTBO).

Stable AIDL
Android 10 adds support for stable Android Interface
Definition Language (AIDL), a new way to keep track of
the application program interface (API)/application
binary interface (ABI) provided by AIDL interfaces.

Moving fastboot to userspace
Android 10 adds support for resizable partitions by
relocating the fastboot implementation from bootloader to
user space.
HIDL/HAL

Offload BroadcastQueue
Android 10 includes a new offload BroadcastQueue to the
existing background and foreground queues. The offload queue
has the same priority and timeout behavior as the background
queue. To prevent blocking the background queue, where more
interesting or user-visible broadcasts can happen, the offload
queue handles the BOOT_COMPLETED broadcast, which many
apps listen to and can take a long time to complete. The offload
queue currently only handles the BOOT_COMPLETED
broadcast, but can potentially handle other long broadcasts.

SystemSuspend service
Android 10 replaces the thread in libsuspend responsible for
initiating system suspend with the SystemSuspend HIDL service.
This implementation offers equivalent functionality to previous
versions while leveraging benefits from the Android HIDL
infrastructure.

safe_union in HIDL
Android 10 introduces safe_union, an explicitly tagged union
type, in HIDL.safe_union in HIDL represents an explicitly tagged
union type. This is similar to a union except safe_union keeps
track of the underlying type and is compatible with Java. The
safe_union type is available in Android 10 and higher for new
and upgraded devices.

HAL: Autoshutdown
Android 10 adds support for HALs to shut down
automatically when they have no clients with help
automatic lifecycles features.
Dynamic shutdown requires multiple policies for deciding
when to start a HAL and when to shutdown a HAL. If a
HAL decides to exit for any reason, it will automatically be
restarted when it is needed again using the information
provided in the HAL definition and the infrastructure
provided by changes to init and hwservicemanager. This
could involve a couple of different strategies, including:

A HAL could choose to call exit on itself if someone
calls a close or similar API on it. This behavior must
be specified in the corresponding HAL interface.

HALs can shut down when their task is completed
Power /Performance
Doze mode extended
In Android 10, Doze mode can be enabled on always-on devices
as well as on battery-powered devices.
New battery saver schedule option
Android 10 introduces a new battery saver schedule option
called based on routine. Routine battery saver allows an app
chosen by the OEM to provide signals to the system for more
intelligent battery saver scheduling. This option requires
configuration, and is optional to implement.
Power stats HAL
In Android 10, IPowerStats.hal replaces the power stats
collection APIs in IPower.hal. While the power HAL still
supports the APIs.
Thermal Mitigation
The Thermal framework in Android 10 abstracts device
interfaces for the thermal subsystem temperature sensor,
including CPU, GPU, battery, skin, and cooling device. The
framework introduces a polling interface to query thermal status
to initiate throttling, and a callback interface to send a message
to the user when a threshold is exceeded.
System service such as an Android API or device manufacturer
API can access information about associated causal events.
Device manufacturers or SoC makers must implement thermal
HAL 2.0 to enable the full functionality of the new thermal
framework.
Cgroup abstraction layer
Android 10 includes a cgroup abstraction layer and task profiles,
which developers can use to describe a set of restrictions to apply to a
thread or a process. The system uses the profiles to choose how to
apply the restrictions using available cgroups and can change the
underlying cgroup feature set without affecting higher software layers.
In Android 10:

Cgroup setup (previously done via the init.rc initialization script)
is described using cgroups.json file, and all cgroups are mounted
before early-init stage of the initialization process.

Task profiles provide an abstraction that decouples required
functionality from how that functionality is implemented.
Profiles are described using the task_profiles.json file and the
Android framework can apply those profiles to a process or a
thread using the new SetTaskProfiles and SetProcessProfiles
APIs.
Low Memory Killer Daemon (lmkd)
Android 10 supports a new lmkd mode that uses kernel pressure stall
information (PSI) monitors for memory pressure detection.
The Android low memory killer daemon (lmkd) process monitors the
memory state of a running Android system and reacts to high memory
pressure by killing the least essential processes to keep system
performing at acceptable levels.
DISPLAY
HDR video playback
Android 10 supports HDR10, VP9, and HDR10+ playback.
Text classification
Text classification uses machine learning techniques to help
developers classify text. Android 10 introduces two methods to
the TextClassifier API: suggestConversationActions and
detectLanguage. The suggestConversationActions method
generates suggested replies and actions from a given conversation
and the detectLanguage method detects the language of the text.
Support for Zawgyi font rendering
Zawgyi is the most popular font in Myanmar. Android 9 and
lower didn't support rendering Zawgyi because it isn't Unicode
compliant. Android 10 addresses this by including a Unicode font
capable of rendering both Unicode Burmese and Zawgyi
together. No implementation work is needed to support Zawgyi
font rendering on devices launching with Android 10.
Limitations to hiding app icons
Android 10 limits the ability to hide app icons in the launcher.
Apps must have an icon unless any of the following is true:
It's a system app, even if it's been updated.
It's a managed profile admin (work profile owner).
It requests no permissions.
It contains no components (such as, activities, content
providers, broadcast receivers, and services).
ASurfaceControl
Android 10 adds ASurfaceControl, which is another way that
SurfaceFlinger can accept buffers. ASurfaceControl combines a surface
and a SurfaceControl into one transaction package that is sent to
SurfaceFlinger. An ASurfaceControl is associated with a layer, which
apps update through ASurfaceTransactions. Apps then get information
about ASurfaceTransactions through callbacks that pass
ASurfaceTransactionStats containing information, such as latch time,
acquire times, and so on.
OpenGL ES layers
Android 10 introduces a layering system for GLES 2.0+. GLES layers
are shared objects available from within apps or provided by tools.
GLES layers enable debuggable apps to discover and load layers using
the same setup mechanisms as Vulkan.
EGL 1.5
Android 10 implements the EGL 1.5 interface. For information on new
features in EGL 1.5, see the Khronos Releases 1.5 Specification.
Vulkan 1.1
Android 10 includes support for Vulkan 1.1 graphics. The platform also
supports VK_KHR_swapchain v70, so the Vulkan app is able to create a
VkImage backed by swapchain memory.
Performance refresh rate
Android 10 adds support for a performance refresh rate. This feature is
turned off by default.
GRAPHICS
AUDIO
Audio HAL Capabilities extended
Android 10 includes the following new capatibilties for audio HAL.
AudioSource
AudioFormat
AudioChannelMask
Additional requirements are added for audio HAL and subsystem
implementation.
Refactor audio policy manager
Android 10 includes a significant refactoring of the audio policy
manager to provide more flexibility to support complex automotive use
cases.

OEM-specific routing strategies.

Customizable volume groups for groups of legacy stream types
using the same volume curves.

Routing strategies declared by the audio policy engine instead of
being hard coded.

Volume curves and groups managed by the audio policy engine.

Internal refactoring preparing for a future split between common
code and configurable code and offering richer audio device
management.
High resolution audio
Android 10 includes the following improvements for high-resoluton
audio.
Float support
192 KHz frequency support
Eight-channel support
Inclusion of timing information
Preprocessing effects
Android provides preprocessing effects, such as acoustic echo
cancellation, automatic gain control, and noise suppression. Android 10
includes new requirements for capturing with
VOICE_COMMUNICATION.
Concurrent capture
Android 10 improves the user experience that requires more than one active
audio capture to happen simultaneously, for example, if the user wants to
control a VoIP call or video recorder with voice commands provided by an
accessibility service.
The audio framework implements the policy allowing only certain privileged
apps to capture concurrently with regular apps.
AudioPlaybackCapture API
Android 10 contains a new API called AudioPlaybackCapture, which gives apps
the ability to copy the audio being played by other apps. This feature is similar
to screen capture, but for audio. The primary use case is to enable streaming
apps to capture the audio being played by games.
The capture API doesn't affect the latency of the app whose audio is being
captured.
MIDI
Android 10 makes it easier to port professional audio apps using MIDI
to the Android platform using the AMidi NDK API.
CAMERA
Changes to the camera API/ camera HAL/camera module
Camera API:

Multi-camera improvements that allow physical cameras to be used
individually or through corresponding logical cameras by hiding physical
camera Ids.

Ability to check whether a particular session configuration is supported
without the performance overhead of creating a new session.

Ability to retrieve recommended stream configurations for a given use case
to make the client more power efficient and performant.

Support for the depth JPEG image format. For further details

Privacy improvements. Certain keys are required for the client to have
CAMERA permissions before they can be retrieved from
cameracharacteristics.

Support for the HEIC Image forms.
Camera HAL
Camera HAL versions(3.5 ,3.4,2.5,2.4 ) are updated in Android 10.
Camera framework privacy improvements
Android 10 introduces privacy enhancements to the camera framework. To
avoid exposing potentially sensitive static camera information in
CameraCharacteristics without user consent, apps must obtain the CAMERA
permission to retrieve static metadata with a privacy-sensitive tag using the
getCameraCharacteristics method.
Session reconfiguration query
Android 10 introduces an optional session reconfiguration
query feature to improve performance as internal stream
reconfigurations resulting from session parameter value
modifications can reduce performance.
Camera HAL3 buffer management APIs(Optional)
Android 10 introduces optional camera HAL3 buffer management APIs
that allow you to implement buffer management logic to achieve different
memory and capture latency tradeoffs in camera HAL implementations.
Camera HAL dynamic physical camera switch
Android 10 introduces a dynamic metadata tag,
ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, which indicates the
active underlying physical camera of a logical camera device
Support for hiding physical cameras
In Android 10, the camera HAL can reduce the number of physical cameras that can
be directly opened by an app.
vendor-available library
In Android 10, vendor modules can access and control camera devices through two new
standard HIDL interfaces, android.frameworks.cameraservice.service@2.0 and
android.frameworks.cameraservice.device@2.0. To make using the HIDL interfaces
more convenient, Android 10 also introduces a vendor-available library,
libcamera2_vendor..
HEIF imaging support
Android 10 provides native camera support for high efficiency image file
format (HEIF) images, which offer improved image quality and smaller
sizes over JPEG images. Devices must have an HEIC or HEVC encoder to
support HEIF images.
Monochrome cameras
Android 10 provides additional support for the Y8 stream format, monochrome
and near-infrared (NIR) color filter array static metadata, and DngCreator
functions for monochrome cameras.
CONNECTIVITY -NFC
,Carrier,SIM
Secure NFC:
Secure NFC allows off-host NFC card emulation to be enabled only
when the device's screen is unlocked. Implementing this feature gives
users the option to enable Secure NFC for improved security.
Android Beam deprecated
In Android 10, Android Beam is no longer required and the following
interfaces and methods have been deprecated.
5G Non-Standalone (NSA)
Android 10 adds support for 5G non-standalone (NSA). 5G NSA is a
solution for 5G networks where the network is supported by an
existing 4G infrastructure. On Android 10, devices can display a 5G
icon on the status bar when a device connects to a 5G network.
Phone account suggestion service
In Android 10, the phone account suggestion service allows
suggestions for phone accounts to be shown to users when making a
call. For example, for users with a device with multiple SIMs and
lower rates for for intra-network calls, this service first identifies the
callee's carrier and then suggests using the SIM on the same network
as the callee.
The phone account suggestion service is optional and can be
implemented on devices running Android 10 or higher.
Android emergency numbers/calling (location) services
Android 10 provides improved support for emergency calling. In an
emergency, devices with support for IRadio HAL v1.4 can initiate an
emergency call using emergency numbers retrieved from a source such as
a SIM card, the network signal, or the Android database. Numbers can
be categorized based on emergency service categories such as police, fire,
and ambulance.
Supporting multiple eSIMs
For devices running Android 10 or higher, the EuiccManager class
supports devices with multiple eSIMs. Devices with a single eSIM
that are upgrading to Android 10 don't require any modification to
the LPA implementation as the platform automatically associates
the EuiccManager instance with the default eUICC. The default
eUICC is determined by the platform for devices with radio HAL
version 1.2 or higher and by the LPA for devices with radio HAL
versions lower than 1.2.
CONNECTIVITY -WIFI
Wi-Fi Low-Latency Mode
Android 10 extends the Wi-Fi lock API to allow latency-sensitive apps to configure Wi-Fi to
a low-latency mode. The low-latency mode starts when all of the following conditions are met:

Wi-Fi is enabled and the device has internet access

The app has created and acquired a Wi-Fi lock, and is running in the foreground

The screen is on.
To support low-latency mode on devices, device manufacturers must update the WLAN driver
and vendor HAL. In low-latency mode, power save (also known as doze state in the IEEE
802.11 standard) is explicitly disabled by the framework. The scanning and roaming
parameters in the driver and firmware layers can be optimized to further reduce Wi-Fi
latency. The exact optimizations are implementation specific.
Android has a high-performance Wi-Fi lock mode (introduced in API level 12) that is separate
from the low-latency mode.
Score cards:
Score cards, introduced in Android 10, record on-device statistics about BSSIDs. Score cards
are persisted using the IpMemoryStore service.
Score cards aren't used in Android 10 network selection.
WPA3 and Wi-Fi Enhanced Open
Android 10 introduces support for the Wi-Fi Alliance's (WFA) Wi-Fi Protected Access
version 3 (WPA3) and Wi-Fi Enhanced Open standards.
WPA3 is a new Wi-Fi Alliance (WFA) security standard for personal and enterprise
networks. It aims to improve overall Wi-Fi security by using modern security
algorithms and stronger cipher suites.
Wi-Fi Enhanced Open is a new Wi-Fi Alliance (WFA) security standard for public
networks based on opportunistic wireless encryption (OWE). It provides encryption
and privacy on open, non-password-protected networks in areas such as cafes, hotels,
restaurants, and libraries. Enhanced Open doesn't provide authentication.
WPA3 and Wi-Fi Enhanced Open improve overall Wi-Fi security, providing better
privacy and robustness against known attacks.
WPA3 and Wi-Fi Enhanced Open are only supported in client mode.
Passpoint R2 features:
Android 10 introduces support for Passpoint R2 features. Passpoint
R2 implements online sign up (OSU), a standard method to
provision new Passpoint profiles. Android 10 supports the
provisioning of EAP-TTLS profiles using SOAP-XML.
The Passpoint R2 features supported in Android 10 only require
AOSP code (no additional driver or firmware support is required).
The AOSP code also includes a default implementation of the
Passpoint R2 UI in the Settings application.
Wi-Fi Easy Connect:
Android 10 introduces support for the Wi-Fi Easy Connect protocol,
also known as the device provisioning protocol (DPP). Wi-Fi Easy
Connect was introduced by the Wi-Fi Alliance (WFA) as an
alternative to Wi-Fi Protected Setup (WPS). WPS was deprecated
in Android 9.
Wi-Fi Easy Connect provides a simple and secure method to:

Onboard Wi-Fi devices (including headless devices) to a network
without entering a password.

Join Wi-Fi networks without knowing or entering a password.
Android 10 supports Wi-Fi Easy Connect only in initiator mode
(responder mode is not supported).
Android 10 supports the pre-shared key (PSK) protocol for WPA2 and
the simultaneous authentication of equals (SAE) protocol for WPA3.
Wi-Fi Easy Connect is only supported in client mode (SoftAP mode is
not supported).
SECURITY
BoundsSanitizer :
Android 10 deploys BoundsSanitizer (BoundSan) in Bluetooth and codecs. BoundSan
uses UBSan's bounds sanitizer. This mitigation is enabled on a per-module level. It
helps keep critical components of Android secure and shouldn't be disabled.
BoundSan is enabled in the following codecs:
libFLAC , libavcdec, libavcenc, libhevcdec, libmpeg2,libopus,
libvpx,Libspeexresampler,libvorbisidec, libaac,libxaac
Integer Overflow Sanitization
Android 10 enables Integer Overflow Sanitization (IntSan) in software
codecs. Ensure that playback performance is acceptable for any codecs
that aren't supported in the device's hardware.
IntSan is enabled in the following codecs:
LibFLAC , libavcdec, libavcenc, libhevcdec, libmpeg2, libopus, libvpx,
libspeexresampler, libvorbisidec
Execute-only memory
By default, executable code sections for AArch64 system binaries are marked
execute-only (nonreadable) as a hardening mitigation against just-in-time
code reuse attacks. Code that mixes data and code together and code that
purposefully inspects these sections (without first remapping the memory
segments as readable) no longer functions. Apps with a target SDK of Android
10 (API level 29 or higher) are impacted if the app attempts to read code
sections of execute-only memory (XOM) enabled system libraries in memory
without first marking the section as readable.
New Face authentication Stack
Face authentication allows users to unlock their device simply by
looking at the front of their device. Android 10 adds support for a new
face authentication stack that can securely process camera frames,
preserving security and privacy during face authentication on
supported hardware. Android 10 also provides an easy way for
security-compliant implementations to enable app integration for
transactions such as online banking or other services.
Extended access
Trust agents, the underlying mechanism used by tertiary
authentication mechanisms such as Smart Lock, can only extend
unlock in Android 10. Trust agents can no longer unlock a locked
device and can only keep a device unlocked for a maximum of four
hours.
Encryption -> Android 10 uses OEMCrypto API version 15.
Testing:
Scudo
Scudo is a dynamic user-mode memory allocator designed to be more
resilient against heap-related vulnerabilities. It provides the standard C
allocation and deallocation primitives, as well as the C++ primitives.
ShadowCallStack
ShadowCallStack (SCS) is an LLVM instrumentation mode that protects
against return address overwrites (like stack buffer overflows) by saving a
function's return address to a separately allocated ShadowCallStack instance
in the function prolog of nonleaf functions and loading the return address
from the ShadowCallStack instance in the function epilog.
PERMISSIONS
Restrict app clipboard access
In Android 10, clipboard access has changed so that clipboard content
can’t be watched. This increases user privacy and disables malvertizing
apps from modifying the clipboard.
In Android 10, read access is only allowed to either the current app with
input focus, or to the current keyboard.
Runtime permissions include activity recognition
Users now see an activity recognition dialog when an app accesses device
location in the background. Hard-restricted runtime permissions must be
properly whitelisted in Android 10.
MANAGE_DEVICE_ADMINS permission
Android 10 changes the MANAGE_DEVICE_ADMINS permission from
signature or privileged to signature only. This means that only platform-
signed apps can set other apps as a device admin.
Sharing API improvements
Android 10 provides a number of new Android Platform API features
related to sharing. If you've modified the Share Sheet code in your
implementation, ensure that your implementation supports these new
features. If you haven't modified the Share Sheet code in your
implementation, you don’t need to do anything to support these new
features.
Contacts provider and affinities information
Starting in Android 10, contacts-affinity-related data, managed by the
Contacts Provider component, is accessed differently than in Android 9
and lower. These changes regarding data accessibility improve user
privacy in all Android 10 devices that use the Contacts Provider
component. The underlying database no longer contains contact
affinities data. Therefore apps can’t write to or read from it.The changes
in Android 10 are expected to have a large impact on APIs.
Tristate location permissions
In Android 10,it give users more control over how apps access their device
locations.

Background location access reminder-Android 10 features a
background access location reminder, which increases transparency into
how much access apps have to a device's location and helps users
maintain control over such access.

Restrict opportunistic locations -Starting in Android 10, to get
opportunistic location updates, developers must specify that they need
passive location updates from the FusedLocationProviderClient class.

Background apps launching-In Android 10, nonprivileged apps
without a visible window can’t launch themselves automatically to the
foreground. This change suppresses ad popups and malicious takeovers.
No action is required to enable this.
App sandboxing
In Android 10, apps have a limited raw view of the file system, with no
direct access to paths like /sdcard/DCIM. However, apps retain full raw
access to their package-specific paths. Apps still have full raw access to
their package-specific paths.
UPDATES
Overlayfs
Users working with userdebug or eng builds expect to be able to remount
the system partition as read-write and then add or modify any number of
files without reflashing the system image, which is understandably
efficient for a development cycle. Limited memory systems that chose to
use readonly filesystems like squashfs, or Logical Resizable Android
Partitions which land system partition images right-sized, and with
filesystem that have been deduped on the block level to compress the
content; means that either a remount is not possible directly, or when
done offers little or no utility because of remaining space limitations or
support logistics.
Overlayfs comes to the rescue for these debug scenarios, and logic will
automatically setup backing storage for a writable filesystem as an upper
reference, and mount overtop the lower. These actions will be performed
in the adb disable-verity and adb remount requests.
User Data Checkpoint (UDC)
Android 10 introduces User Data Checkpoint (UDC), which allows
Android to roll back to its previous state when an Android over-the-air
(OTA) update fails. With UDC, if an Android OTA update fails, the device
can safely roll back to its previous state. Although A/B updates solve this
problem for early boot, rollback isn't supported when the user data
partition (mounted on /data) is modified.
UDC enables the device to revert the user data partition even after being
modified. The UDC feature accomplishes this with checkpoint capabilities
to the file system, an alternative implementation when the file system
doesn't support checkpoints, integration with the bootloader A/B
mechanism while also supporting non-A/B updates, and support for key
version binding and key rollback prevention.
APEX continer file format
Android Pony EXpress (APEX) is a container format introduced in Android 10
that is used in the install flow for lower-level system modules. This format
facilitates the updates of system components that don't fit into the standard
Android application model. Some example components are native services and
libraries, hardware abstraction layers (HALs), runtime (ART), and class libraries.
Dynamic partitions
Dynamic partitions introduce a userspace partitioning system to Android, allowing
partitions to be created, resized, or destroyed during OTA updates. Device makers
don't have to worry about the individual sizes of partitions, such as system,
vendor, and product. Instead, one big super partition is allocated, and subpartitions
can be sized dynamically within it.Individual partition images no longer have to
leave empty space for future OTAs. Instead, the remaining free space in super is
available for all dynamic partitions.
Dynamic system updates
Dynamic system updates (DSU) allows you to make an Android system image
that users can download from the internet and try out without the risk of
corrupting the current system image
Multiuser backup and restore
Android 10 supports backup and restore functionality for all users on a device.
Previously, backup and restore was only available for the system user. Backup and
restore for nonsystem users is turned off by default as it has only partial coverage
for settings, wallpaper, and system components.
Shared library support in recovery mode
In Android 10, shared libraries are available in the recovery partition, which eliminates
the need for all recovery mode executables to be static. The shared libraries are located
under the /system/lib (or /system/lib64 for 64-bit devices) directory in the partition.To
add a new shared library to the recovery partition, add recovery_available: true or
recovery: true to Android.bp of the shared library. The former installs the library to
both the system and recovery partitions, while the latter installs it only to the recovery
partition.
OTHERS
Gestural navigation
Android 10 introduces an option for a fully gestural system
navigation. New ways to navigate around your phone without
using any buttons. Go backwards and forwards, pull up the
homescreen, and swipe up to see your open apps.
Dark theme
You can now turn your UI and first-party apps dark by activating
Dark theme in Settings. This is easy on the eyes, and helps saves
battery, too.
Built-in Android Auto
Android Auto now comes built-in, so you can simply plug in your
phone and start using Android on your car's display. No app download
needed.
Contaminant detection
If moisture or debris is detected in your USB port, a notification will
be sent to you and accessories will not function.
Priotize notifications
With Android 10, you can organize and prioritize notifications by
marking them as "silent" or "alerting". Silent and alerting notifications
are separated in the notifications bar, making it easier for you to see
what needs your attention
Manage notifications
It's easier to find and manage notifications Settings straight from the
notifications panel. Just pull it down, scroll to the bottom and tap
manage in the bottom left hand corner.
NN API Updates:
Android 10 introduces NN HAL 1.2 and updates to NN API. Neural
Networks API new updates below
AhardwareBuffer
BurstExecutions and Fast Message Queues
Compilation Caching
Device Discover y and Assignment
Sensors- HAL2.0 (Fast message queues)
Sensors HAL 2.0 is available in Android 10 and higher for new and
upgraded devices. Sensors HAL 2.0 is based on Sensors HAL 1.0 but
has several key differences, which prevents it from being backwards
compatible. Sensors HAL 2.0 uses Fast Message Queues (FMQ) to send
sensor events from the HAL into the Android Sensors Framework.
Sensors off
Android 10 includes a developer setting to shut off all sensors on a
device. This feature helps developers test their app’s functionality in
situations where those sensors become unavailable, and also gives users
a way to control the sensors in their device.
Modular system components
Android 10 modularizes some Android system components and enables
them to be updated outside of the normal Android release cycle.
Java_sdk_library
Android 10 introduces java_sdk_library, a new build rule to fix compatibility
issues for shared Java libraries. Device manufacturers can use this mechanism
for their own shared Java libraries to maintain backward compatibility for
their APIs.
REFERENCESeference Links
https://www.android.com/android-10/
https://blog.google/products/android/android-10/
https://source.android.com/

More Related Content

PDF
Android OS Porting: Introduction
PPT
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
PDF
Embedded Android : System Development - Part II (HAL)
PPT
Learning AOSP - Android Linux Device Driver
PDF
Design and Concepts of Android Graphics
PDF
Embedded Android : System Development - Part I
PDF
Android's HIDL: Treble in the HAL
PDF
CKA Certified Kubernetes Administrator Notes
Android OS Porting: Introduction
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
Embedded Android : System Development - Part II (HAL)
Learning AOSP - Android Linux Device Driver
Design and Concepts of Android Graphics
Embedded Android : System Development - Part I
Android's HIDL: Treble in the HAL
CKA Certified Kubernetes Administrator Notes

What's hot (20)

PDF
Accessing Hardware on Android
PDF
Explore Android Internals
ODP
Q4.11: Porting Android to new Platforms
PPTX
U-boot and Android Verified Boot 2.0
PDF
Android Treble: Blessing or Trouble?
PDF
Android Binder IPC for Linux
PDF
Android internals 07 - Android graphics (rev_1.1)
PPTX
Android camera basics
PDF
Power Management from Linux Kernel to Android
PDF
Embedded Android : System Development - Part IV
PDF
Android Automotive
PDF
Android for Embedded Linux Developers
PDF
Understanding the Android System Server
ODP
Embedded Android : System Development - Part III
PDF
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
PDF
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
PDF
Project meeting: Android Graphics Architecture Overview
PPT
Android CTS training
PDF
Ansible
PPT
Android booting sequece and setup and debugging
Accessing Hardware on Android
Explore Android Internals
Q4.11: Porting Android to new Platforms
U-boot and Android Verified Boot 2.0
Android Treble: Blessing or Trouble?
Android Binder IPC for Linux
Android internals 07 - Android graphics (rev_1.1)
Android camera basics
Power Management from Linux Kernel to Android
Embedded Android : System Development - Part IV
Android Automotive
Android for Embedded Linux Developers
Understanding the Android System Server
Embedded Android : System Development - Part III
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
Project meeting: Android Graphics Architecture Overview
Android CTS training
Ansible
Android booting sequece and setup and debugging
Ad

Similar to Android 10 (20)

PPTX
Android
PPTX
Zeelogic android-training-2013
PPT
Android
PPTX
Manish Chasta - Securing Android Applications
PPTX
Android Overview
PPTX
Android development-tutorial
PDF
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
PDF
Android internals
PDF
Wifi Direct Based Chat And File Transfer Android Application
PPT
1 introduction of android
PPT
Android presentation
PPT
Android Anatomy
PPTX
PPT on Android
DOCX
Android seminar-report-body.doc
PPT
Portinig Application, Drivers And Os
PPTX
Android apps
PPT
Android In A Nutshell
DOCX
Android
PPTX
Android 110521210945-phpapp01
PPT
Android platform overview
Android
Zeelogic android-training-2013
Android
Manish Chasta - Securing Android Applications
Android Overview
Android development-tutorial
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
Android internals
Wifi Direct Based Chat And File Transfer Android Application
1 introduction of android
Android presentation
Android Anatomy
PPT on Android
Android seminar-report-body.doc
Portinig Application, Drivers And Os
Android apps
Android In A Nutshell
Android
Android 110521210945-phpapp01
Android platform overview
Ad

Recently uploaded (20)

PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
sap open course for s4hana steps from ECC to s4
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Spectroscopy.pptx food analysis technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Electronic commerce courselecture one. Pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Unlocking AI with Model Context Protocol (MCP)
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
sap open course for s4hana steps from ECC to s4
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Programs and apps: productivity, graphics, security and other tools
Spectral efficient network and resource selection model in 5G networks
Spectroscopy.pptx food analysis technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Review of recent advances in non-invasive hemoglobin estimation
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Empathic Computing: Creating Shared Understanding
Network Security Unit 5.pdf for BCA BBA.
Electronic commerce courselecture one. Pdf

Android 10

  • 1. ANDROID 10 Just the way you want it. By/Praveen Kumar K
  • 2. INTRODUTION Android 10 is the tenth major release and the 17th version of the Android mobile operating system. It was released on September 3, 2019 and centered on innovation, security and privacy and digital wellbeing.  Simple,smarter . And more helpful  Supporting new technologies like Foldables and 5G  Powered by on -device Machine learning  New privacy and security features  Faster updates, fresher code Highlights  Live Caption  Smart Reply  Sound Amplifier  Guesture Navigation  Dark Theme  Privacy Controls  Location Controls  Security updates  Focus Mode  Family Link
  • 4. K E R N E L ABI monitoring utilities ABI usage checker Android Live-Lock Deamon vDS032 on ARM64 Mounting patitions early D I S P HDR video playback Text Classification API updates Support for Zawgyi font rendering Limitations to hiding app icons C O N N E C T NFC: Secure NFC ,Android Beam deprecated 5G Non-Standalone (NSA) phone account suggestion service Android emergency location services Supporting multiple eSIMs WIFI- Passpoint R2 features,Wi-Fi Easy Connect,Wi- Fi Low-Latency Mode,Score cards, WPA3 and Wi-Fi Enhanced Open H I D L / H A L Offload BroadcastQueue SystemSuspend service safe_union in HIDL Hals Autoshutdown G R A P H I C S ASurfaceControl OpenGL ES layers EGL 1.5 Vulkan 1.1 Performance refresh rate U P D A T E S APEX continer file format Dynamic partitions Dynamic system updates Multiuser backup and restore Overlayfs Shared library support in recovery mode User Data Checkpoint (UDC) B o o t l o a d e r Root file system moved to system img Building ODM parititions Boot_image_header_versioning Recovery imges for non-A/B devices Stable AIDL Moving fastboot to userspace A U D I O Audio HAL capabilities extn Preprocessing effects Refactor audio policy manager High resolution audio Concurrent capture AudioPlaybackCapture API MIDI S E C U R I T Y New Face authentication stack Extended access Encryption - > uses OEM crypto API version 5 BoundSantizer,Integer Overflow Santizer, scudo,ShadowCallback,Execute-Only memory P E R M I S S I O N Contacts provider and affinities information Tristate location permissions Background location access reminder Restrict opportunistic locations Background apps launching Restrict app clipboard access Runtime permissions include activity recognition Sharing API improvements P O W E R Doze mode extended New battery saver schedule Power stats HAL Thermal mitigation C A M E R A Changes to the camera API/ camera HAL/camera module Camera framework privacy improvements Session reconfiguration query Camera HAL3 buffer management APIs(Optional) Camera HAL dynamic physical camera switch Support for hiding physical cameras Introduces a vendor-available library HEIF imaging support Monochrome cameras C O N F Config HAL deprecated config_file_schema_api system_properties_as_apis P E R F Cgroup abstraction layer Low Memory killer Deamon (lmkd) O T H E R S Gestural navigation,Dark theme,Built-in Android Auto Contaminant detection,Priotize/manage notifications Updates to NN API Sensors- HAL2.0 (Fast message queues) ,Sensors off Modular system components Java_sdk_library
  • 5. KERNEL  ABI Monitoring utilities Android 10 includes support for new ABI monitoring utilities to help with comparing, tracking, and mitigating kernel ABI changes that affect compatibility with kernel modules.  ABI usage checker Android 10 introduces a symbol-based ABI usages checker. The checker can detect outdated prebuilt binaries at build time, so that shared library developers can know which prebuilt binaries might be broken by their change and which prebuilt binaries must be rebuilt.  Android Live-Lock Deamon Android 10 includes the Android Live-Lock Daemon (llkd), which is designed to catch and mitigate kernel deadlocks  vDS032 on ARM64: Virtual dynamic shared object (vDSO) is an alternative to system calls that, when used and configured correctly, can reduce cycle costs. Android 10 adds support for vDSO32 on 64-bit kernels (Android already supports vDSO64 on 64-bit kernels and vDSO32 on 32-bit kernels). Using vDSO32 (CONFIG_VDSO_COMPAT) on ARM64 architecture provides a 0.4 percent increase in battery life and other performance improvements.  Mounting patitions early In Android 10 and higher, devices must specify fstab entries for early mounted partitions using fstab file in the first stage ramdisk. Android 10 introduces the following fs_mgr flags for use in the fstab file: first_stage_mount indicates that a partition will be mounted by the first stage init. logical indicates that this is a . avb=vbmeta-partition- name specifies the vbmeta partition. The first stage init initializes this partition before mounting other partitions. The argument for this flag can be omitted if the vbmeta partition for the entry has already been specified by another fstab entry in a previous line. The following example shows fstab entries to set the dynamic partition system, vendor, and product partitions as logical (dynamic) partitions. #<dev> <mnt_point> <type> <mnt_flags options> <fs_mgr_flags> system /system ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount vendor /vendor ext4 ro,barrier=1 wait,slotselect,avb=vbmeta,logical,first_stage_mount product /product ext4 ro,barrier=1 wait,slotselect,avb,logical,first_stage_mount In this example, the vendor specifies the vbmeta partition using the fs_mgr flag avb=vbmeta, but product omits the vbmeta argument because vendor has already added vbmeta to the list of partitions. Devices running Android 10 and higher must place the fstab file in the ramdisk and in the vendor partition.
  • 6. BOOT LOADER  Root file system moved to system img In Android 10, the root file system is no longer included in ramdisk.img and is instead merged into system.img.  Building ODM parititions Android 10 includes support for building odm partitions using the Android build system. You can use a separate /odm partition for customizations, which enables you to use a single vendor image for multiple hardware SKUs. This enables original design manufacturers (ODMs) to customize system-on-chip (SoC) vendor board-support packages (BSPs) to their specific devices (their boards). They can implement kernel modules for board-specific components, board-specific daemons, or their own features on hardware abstraction layers (HALs). They may also replace or customize SoC components.  Boot image header versioning Android 10 updates the boot image header to version 2, which includes a section to store the device tree blob (DTB) image. Android 10 VTS tests verify that all devices launching with Android 10 use boot image header version 2 and include a valid DTB image as part of the boot/recovery images.  Recovery images for non-A/B devices In Android 9 and higher, a device's recovery image must contain information from the overlay image. Device manufacturers can use DeviceTree or Advanced Configuration and Power Interface (ACPI) to describe all nondiscoverable devices. Android 10 and higher includes support for architectures that use ACPI instead of DeviceTree blob for overlay (DTBO).  Stable AIDL Android 10 adds support for stable Android Interface Definition Language (AIDL), a new way to keep track of the application program interface (API)/application binary interface (ABI) provided by AIDL interfaces.  Moving fastboot to userspace Android 10 adds support for resizable partitions by relocating the fastboot implementation from bootloader to user space.
  • 7. HIDL/HAL  Offload BroadcastQueue Android 10 includes a new offload BroadcastQueue to the existing background and foreground queues. The offload queue has the same priority and timeout behavior as the background queue. To prevent blocking the background queue, where more interesting or user-visible broadcasts can happen, the offload queue handles the BOOT_COMPLETED broadcast, which many apps listen to and can take a long time to complete. The offload queue currently only handles the BOOT_COMPLETED broadcast, but can potentially handle other long broadcasts.  SystemSuspend service Android 10 replaces the thread in libsuspend responsible for initiating system suspend with the SystemSuspend HIDL service. This implementation offers equivalent functionality to previous versions while leveraging benefits from the Android HIDL infrastructure.  safe_union in HIDL Android 10 introduces safe_union, an explicitly tagged union type, in HIDL.safe_union in HIDL represents an explicitly tagged union type. This is similar to a union except safe_union keeps track of the underlying type and is compatible with Java. The safe_union type is available in Android 10 and higher for new and upgraded devices.  HAL: Autoshutdown Android 10 adds support for HALs to shut down automatically when they have no clients with help automatic lifecycles features. Dynamic shutdown requires multiple policies for deciding when to start a HAL and when to shutdown a HAL. If a HAL decides to exit for any reason, it will automatically be restarted when it is needed again using the information provided in the HAL definition and the infrastructure provided by changes to init and hwservicemanager. This could involve a couple of different strategies, including:  A HAL could choose to call exit on itself if someone calls a close or similar API on it. This behavior must be specified in the corresponding HAL interface.  HALs can shut down when their task is completed
  • 8. Power /Performance Doze mode extended In Android 10, Doze mode can be enabled on always-on devices as well as on battery-powered devices. New battery saver schedule option Android 10 introduces a new battery saver schedule option called based on routine. Routine battery saver allows an app chosen by the OEM to provide signals to the system for more intelligent battery saver scheduling. This option requires configuration, and is optional to implement. Power stats HAL In Android 10, IPowerStats.hal replaces the power stats collection APIs in IPower.hal. While the power HAL still supports the APIs. Thermal Mitigation The Thermal framework in Android 10 abstracts device interfaces for the thermal subsystem temperature sensor, including CPU, GPU, battery, skin, and cooling device. The framework introduces a polling interface to query thermal status to initiate throttling, and a callback interface to send a message to the user when a threshold is exceeded. System service such as an Android API or device manufacturer API can access information about associated causal events. Device manufacturers or SoC makers must implement thermal HAL 2.0 to enable the full functionality of the new thermal framework. Cgroup abstraction layer Android 10 includes a cgroup abstraction layer and task profiles, which developers can use to describe a set of restrictions to apply to a thread or a process. The system uses the profiles to choose how to apply the restrictions using available cgroups and can change the underlying cgroup feature set without affecting higher software layers. In Android 10:  Cgroup setup (previously done via the init.rc initialization script) is described using cgroups.json file, and all cgroups are mounted before early-init stage of the initialization process.  Task profiles provide an abstraction that decouples required functionality from how that functionality is implemented. Profiles are described using the task_profiles.json file and the Android framework can apply those profiles to a process or a thread using the new SetTaskProfiles and SetProcessProfiles APIs. Low Memory Killer Daemon (lmkd) Android 10 supports a new lmkd mode that uses kernel pressure stall information (PSI) monitors for memory pressure detection. The Android low memory killer daemon (lmkd) process monitors the memory state of a running Android system and reacts to high memory pressure by killing the least essential processes to keep system performing at acceptable levels.
  • 9. DISPLAY HDR video playback Android 10 supports HDR10, VP9, and HDR10+ playback. Text classification Text classification uses machine learning techniques to help developers classify text. Android 10 introduces two methods to the TextClassifier API: suggestConversationActions and detectLanguage. The suggestConversationActions method generates suggested replies and actions from a given conversation and the detectLanguage method detects the language of the text. Support for Zawgyi font rendering Zawgyi is the most popular font in Myanmar. Android 9 and lower didn't support rendering Zawgyi because it isn't Unicode compliant. Android 10 addresses this by including a Unicode font capable of rendering both Unicode Burmese and Zawgyi together. No implementation work is needed to support Zawgyi font rendering on devices launching with Android 10. Limitations to hiding app icons Android 10 limits the ability to hide app icons in the launcher. Apps must have an icon unless any of the following is true: It's a system app, even if it's been updated. It's a managed profile admin (work profile owner). It requests no permissions. It contains no components (such as, activities, content providers, broadcast receivers, and services). ASurfaceControl Android 10 adds ASurfaceControl, which is another way that SurfaceFlinger can accept buffers. ASurfaceControl combines a surface and a SurfaceControl into one transaction package that is sent to SurfaceFlinger. An ASurfaceControl is associated with a layer, which apps update through ASurfaceTransactions. Apps then get information about ASurfaceTransactions through callbacks that pass ASurfaceTransactionStats containing information, such as latch time, acquire times, and so on. OpenGL ES layers Android 10 introduces a layering system for GLES 2.0+. GLES layers are shared objects available from within apps or provided by tools. GLES layers enable debuggable apps to discover and load layers using the same setup mechanisms as Vulkan. EGL 1.5 Android 10 implements the EGL 1.5 interface. For information on new features in EGL 1.5, see the Khronos Releases 1.5 Specification. Vulkan 1.1 Android 10 includes support for Vulkan 1.1 graphics. The platform also supports VK_KHR_swapchain v70, so the Vulkan app is able to create a VkImage backed by swapchain memory. Performance refresh rate Android 10 adds support for a performance refresh rate. This feature is turned off by default. GRAPHICS
  • 10. AUDIO Audio HAL Capabilities extended Android 10 includes the following new capatibilties for audio HAL. AudioSource AudioFormat AudioChannelMask Additional requirements are added for audio HAL and subsystem implementation. Refactor audio policy manager Android 10 includes a significant refactoring of the audio policy manager to provide more flexibility to support complex automotive use cases.  OEM-specific routing strategies.  Customizable volume groups for groups of legacy stream types using the same volume curves.  Routing strategies declared by the audio policy engine instead of being hard coded.  Volume curves and groups managed by the audio policy engine.  Internal refactoring preparing for a future split between common code and configurable code and offering richer audio device management. High resolution audio Android 10 includes the following improvements for high-resoluton audio. Float support 192 KHz frequency support Eight-channel support Inclusion of timing information Preprocessing effects Android provides preprocessing effects, such as acoustic echo cancellation, automatic gain control, and noise suppression. Android 10 includes new requirements for capturing with VOICE_COMMUNICATION. Concurrent capture Android 10 improves the user experience that requires more than one active audio capture to happen simultaneously, for example, if the user wants to control a VoIP call or video recorder with voice commands provided by an accessibility service. The audio framework implements the policy allowing only certain privileged apps to capture concurrently with regular apps. AudioPlaybackCapture API Android 10 contains a new API called AudioPlaybackCapture, which gives apps the ability to copy the audio being played by other apps. This feature is similar to screen capture, but for audio. The primary use case is to enable streaming apps to capture the audio being played by games. The capture API doesn't affect the latency of the app whose audio is being captured. MIDI Android 10 makes it easier to port professional audio apps using MIDI to the Android platform using the AMidi NDK API.
  • 11. CAMERA Changes to the camera API/ camera HAL/camera module Camera API:  Multi-camera improvements that allow physical cameras to be used individually or through corresponding logical cameras by hiding physical camera Ids.  Ability to check whether a particular session configuration is supported without the performance overhead of creating a new session.  Ability to retrieve recommended stream configurations for a given use case to make the client more power efficient and performant.  Support for the depth JPEG image format. For further details  Privacy improvements. Certain keys are required for the client to have CAMERA permissions before they can be retrieved from cameracharacteristics.  Support for the HEIC Image forms. Camera HAL Camera HAL versions(3.5 ,3.4,2.5,2.4 ) are updated in Android 10. Camera framework privacy improvements Android 10 introduces privacy enhancements to the camera framework. To avoid exposing potentially sensitive static camera information in CameraCharacteristics without user consent, apps must obtain the CAMERA permission to retrieve static metadata with a privacy-sensitive tag using the getCameraCharacteristics method. Session reconfiguration query Android 10 introduces an optional session reconfiguration query feature to improve performance as internal stream reconfigurations resulting from session parameter value modifications can reduce performance. Camera HAL3 buffer management APIs(Optional) Android 10 introduces optional camera HAL3 buffer management APIs that allow you to implement buffer management logic to achieve different memory and capture latency tradeoffs in camera HAL implementations. Camera HAL dynamic physical camera switch Android 10 introduces a dynamic metadata tag, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, which indicates the active underlying physical camera of a logical camera device Support for hiding physical cameras In Android 10, the camera HAL can reduce the number of physical cameras that can be directly opened by an app. vendor-available library In Android 10, vendor modules can access and control camera devices through two new standard HIDL interfaces, android.frameworks.cameraservice.service@2.0 and android.frameworks.cameraservice.device@2.0. To make using the HIDL interfaces more convenient, Android 10 also introduces a vendor-available library, libcamera2_vendor.. HEIF imaging support Android 10 provides native camera support for high efficiency image file format (HEIF) images, which offer improved image quality and smaller sizes over JPEG images. Devices must have an HEIC or HEVC encoder to support HEIF images. Monochrome cameras Android 10 provides additional support for the Y8 stream format, monochrome and near-infrared (NIR) color filter array static metadata, and DngCreator functions for monochrome cameras.
  • 12. CONNECTIVITY -NFC ,Carrier,SIM Secure NFC: Secure NFC allows off-host NFC card emulation to be enabled only when the device's screen is unlocked. Implementing this feature gives users the option to enable Secure NFC for improved security. Android Beam deprecated In Android 10, Android Beam is no longer required and the following interfaces and methods have been deprecated. 5G Non-Standalone (NSA) Android 10 adds support for 5G non-standalone (NSA). 5G NSA is a solution for 5G networks where the network is supported by an existing 4G infrastructure. On Android 10, devices can display a 5G icon on the status bar when a device connects to a 5G network. Phone account suggestion service In Android 10, the phone account suggestion service allows suggestions for phone accounts to be shown to users when making a call. For example, for users with a device with multiple SIMs and lower rates for for intra-network calls, this service first identifies the callee's carrier and then suggests using the SIM on the same network as the callee. The phone account suggestion service is optional and can be implemented on devices running Android 10 or higher. Android emergency numbers/calling (location) services Android 10 provides improved support for emergency calling. In an emergency, devices with support for IRadio HAL v1.4 can initiate an emergency call using emergency numbers retrieved from a source such as a SIM card, the network signal, or the Android database. Numbers can be categorized based on emergency service categories such as police, fire, and ambulance. Supporting multiple eSIMs For devices running Android 10 or higher, the EuiccManager class supports devices with multiple eSIMs. Devices with a single eSIM that are upgrading to Android 10 don't require any modification to the LPA implementation as the platform automatically associates the EuiccManager instance with the default eUICC. The default eUICC is determined by the platform for devices with radio HAL version 1.2 or higher and by the LPA for devices with radio HAL versions lower than 1.2.
  • 13. CONNECTIVITY -WIFI Wi-Fi Low-Latency Mode Android 10 extends the Wi-Fi lock API to allow latency-sensitive apps to configure Wi-Fi to a low-latency mode. The low-latency mode starts when all of the following conditions are met:  Wi-Fi is enabled and the device has internet access  The app has created and acquired a Wi-Fi lock, and is running in the foreground  The screen is on. To support low-latency mode on devices, device manufacturers must update the WLAN driver and vendor HAL. In low-latency mode, power save (also known as doze state in the IEEE 802.11 standard) is explicitly disabled by the framework. The scanning and roaming parameters in the driver and firmware layers can be optimized to further reduce Wi-Fi latency. The exact optimizations are implementation specific. Android has a high-performance Wi-Fi lock mode (introduced in API level 12) that is separate from the low-latency mode. Score cards: Score cards, introduced in Android 10, record on-device statistics about BSSIDs. Score cards are persisted using the IpMemoryStore service. Score cards aren't used in Android 10 network selection. WPA3 and Wi-Fi Enhanced Open Android 10 introduces support for the Wi-Fi Alliance's (WFA) Wi-Fi Protected Access version 3 (WPA3) and Wi-Fi Enhanced Open standards. WPA3 is a new Wi-Fi Alliance (WFA) security standard for personal and enterprise networks. It aims to improve overall Wi-Fi security by using modern security algorithms and stronger cipher suites. Wi-Fi Enhanced Open is a new Wi-Fi Alliance (WFA) security standard for public networks based on opportunistic wireless encryption (OWE). It provides encryption and privacy on open, non-password-protected networks in areas such as cafes, hotels, restaurants, and libraries. Enhanced Open doesn't provide authentication. WPA3 and Wi-Fi Enhanced Open improve overall Wi-Fi security, providing better privacy and robustness against known attacks. WPA3 and Wi-Fi Enhanced Open are only supported in client mode. Passpoint R2 features: Android 10 introduces support for Passpoint R2 features. Passpoint R2 implements online sign up (OSU), a standard method to provision new Passpoint profiles. Android 10 supports the provisioning of EAP-TTLS profiles using SOAP-XML. The Passpoint R2 features supported in Android 10 only require AOSP code (no additional driver or firmware support is required). The AOSP code also includes a default implementation of the Passpoint R2 UI in the Settings application. Wi-Fi Easy Connect: Android 10 introduces support for the Wi-Fi Easy Connect protocol, also known as the device provisioning protocol (DPP). Wi-Fi Easy Connect was introduced by the Wi-Fi Alliance (WFA) as an alternative to Wi-Fi Protected Setup (WPS). WPS was deprecated in Android 9. Wi-Fi Easy Connect provides a simple and secure method to:  Onboard Wi-Fi devices (including headless devices) to a network without entering a password.  Join Wi-Fi networks without knowing or entering a password. Android 10 supports Wi-Fi Easy Connect only in initiator mode (responder mode is not supported). Android 10 supports the pre-shared key (PSK) protocol for WPA2 and the simultaneous authentication of equals (SAE) protocol for WPA3. Wi-Fi Easy Connect is only supported in client mode (SoftAP mode is not supported).
  • 14. SECURITY BoundsSanitizer : Android 10 deploys BoundsSanitizer (BoundSan) in Bluetooth and codecs. BoundSan uses UBSan's bounds sanitizer. This mitigation is enabled on a per-module level. It helps keep critical components of Android secure and shouldn't be disabled. BoundSan is enabled in the following codecs: libFLAC , libavcdec, libavcenc, libhevcdec, libmpeg2,libopus, libvpx,Libspeexresampler,libvorbisidec, libaac,libxaac Integer Overflow Sanitization Android 10 enables Integer Overflow Sanitization (IntSan) in software codecs. Ensure that playback performance is acceptable for any codecs that aren't supported in the device's hardware. IntSan is enabled in the following codecs: LibFLAC , libavcdec, libavcenc, libhevcdec, libmpeg2, libopus, libvpx, libspeexresampler, libvorbisidec Execute-only memory By default, executable code sections for AArch64 system binaries are marked execute-only (nonreadable) as a hardening mitigation against just-in-time code reuse attacks. Code that mixes data and code together and code that purposefully inspects these sections (without first remapping the memory segments as readable) no longer functions. Apps with a target SDK of Android 10 (API level 29 or higher) are impacted if the app attempts to read code sections of execute-only memory (XOM) enabled system libraries in memory without first marking the section as readable. New Face authentication Stack Face authentication allows users to unlock their device simply by looking at the front of their device. Android 10 adds support for a new face authentication stack that can securely process camera frames, preserving security and privacy during face authentication on supported hardware. Android 10 also provides an easy way for security-compliant implementations to enable app integration for transactions such as online banking or other services. Extended access Trust agents, the underlying mechanism used by tertiary authentication mechanisms such as Smart Lock, can only extend unlock in Android 10. Trust agents can no longer unlock a locked device and can only keep a device unlocked for a maximum of four hours. Encryption -> Android 10 uses OEMCrypto API version 15. Testing: Scudo Scudo is a dynamic user-mode memory allocator designed to be more resilient against heap-related vulnerabilities. It provides the standard C allocation and deallocation primitives, as well as the C++ primitives. ShadowCallStack ShadowCallStack (SCS) is an LLVM instrumentation mode that protects against return address overwrites (like stack buffer overflows) by saving a function's return address to a separately allocated ShadowCallStack instance in the function prolog of nonleaf functions and loading the return address from the ShadowCallStack instance in the function epilog.
  • 15. PERMISSIONS Restrict app clipboard access In Android 10, clipboard access has changed so that clipboard content can’t be watched. This increases user privacy and disables malvertizing apps from modifying the clipboard. In Android 10, read access is only allowed to either the current app with input focus, or to the current keyboard. Runtime permissions include activity recognition Users now see an activity recognition dialog when an app accesses device location in the background. Hard-restricted runtime permissions must be properly whitelisted in Android 10. MANAGE_DEVICE_ADMINS permission Android 10 changes the MANAGE_DEVICE_ADMINS permission from signature or privileged to signature only. This means that only platform- signed apps can set other apps as a device admin. Sharing API improvements Android 10 provides a number of new Android Platform API features related to sharing. If you've modified the Share Sheet code in your implementation, ensure that your implementation supports these new features. If you haven't modified the Share Sheet code in your implementation, you don’t need to do anything to support these new features. Contacts provider and affinities information Starting in Android 10, contacts-affinity-related data, managed by the Contacts Provider component, is accessed differently than in Android 9 and lower. These changes regarding data accessibility improve user privacy in all Android 10 devices that use the Contacts Provider component. The underlying database no longer contains contact affinities data. Therefore apps can’t write to or read from it.The changes in Android 10 are expected to have a large impact on APIs. Tristate location permissions In Android 10,it give users more control over how apps access their device locations.  Background location access reminder-Android 10 features a background access location reminder, which increases transparency into how much access apps have to a device's location and helps users maintain control over such access.  Restrict opportunistic locations -Starting in Android 10, to get opportunistic location updates, developers must specify that they need passive location updates from the FusedLocationProviderClient class.  Background apps launching-In Android 10, nonprivileged apps without a visible window can’t launch themselves automatically to the foreground. This change suppresses ad popups and malicious takeovers. No action is required to enable this. App sandboxing In Android 10, apps have a limited raw view of the file system, with no direct access to paths like /sdcard/DCIM. However, apps retain full raw access to their package-specific paths. Apps still have full raw access to their package-specific paths.
  • 16. UPDATES Overlayfs Users working with userdebug or eng builds expect to be able to remount the system partition as read-write and then add or modify any number of files without reflashing the system image, which is understandably efficient for a development cycle. Limited memory systems that chose to use readonly filesystems like squashfs, or Logical Resizable Android Partitions which land system partition images right-sized, and with filesystem that have been deduped on the block level to compress the content; means that either a remount is not possible directly, or when done offers little or no utility because of remaining space limitations or support logistics. Overlayfs comes to the rescue for these debug scenarios, and logic will automatically setup backing storage for a writable filesystem as an upper reference, and mount overtop the lower. These actions will be performed in the adb disable-verity and adb remount requests. User Data Checkpoint (UDC) Android 10 introduces User Data Checkpoint (UDC), which allows Android to roll back to its previous state when an Android over-the-air (OTA) update fails. With UDC, if an Android OTA update fails, the device can safely roll back to its previous state. Although A/B updates solve this problem for early boot, rollback isn't supported when the user data partition (mounted on /data) is modified. UDC enables the device to revert the user data partition even after being modified. The UDC feature accomplishes this with checkpoint capabilities to the file system, an alternative implementation when the file system doesn't support checkpoints, integration with the bootloader A/B mechanism while also supporting non-A/B updates, and support for key version binding and key rollback prevention. APEX continer file format Android Pony EXpress (APEX) is a container format introduced in Android 10 that is used in the install flow for lower-level system modules. This format facilitates the updates of system components that don't fit into the standard Android application model. Some example components are native services and libraries, hardware abstraction layers (HALs), runtime (ART), and class libraries. Dynamic partitions Dynamic partitions introduce a userspace partitioning system to Android, allowing partitions to be created, resized, or destroyed during OTA updates. Device makers don't have to worry about the individual sizes of partitions, such as system, vendor, and product. Instead, one big super partition is allocated, and subpartitions can be sized dynamically within it.Individual partition images no longer have to leave empty space for future OTAs. Instead, the remaining free space in super is available for all dynamic partitions. Dynamic system updates Dynamic system updates (DSU) allows you to make an Android system image that users can download from the internet and try out without the risk of corrupting the current system image Multiuser backup and restore Android 10 supports backup and restore functionality for all users on a device. Previously, backup and restore was only available for the system user. Backup and restore for nonsystem users is turned off by default as it has only partial coverage for settings, wallpaper, and system components. Shared library support in recovery mode In Android 10, shared libraries are available in the recovery partition, which eliminates the need for all recovery mode executables to be static. The shared libraries are located under the /system/lib (or /system/lib64 for 64-bit devices) directory in the partition.To add a new shared library to the recovery partition, add recovery_available: true or recovery: true to Android.bp of the shared library. The former installs the library to both the system and recovery partitions, while the latter installs it only to the recovery partition.
  • 17. OTHERS Gestural navigation Android 10 introduces an option for a fully gestural system navigation. New ways to navigate around your phone without using any buttons. Go backwards and forwards, pull up the homescreen, and swipe up to see your open apps. Dark theme You can now turn your UI and first-party apps dark by activating Dark theme in Settings. This is easy on the eyes, and helps saves battery, too. Built-in Android Auto Android Auto now comes built-in, so you can simply plug in your phone and start using Android on your car's display. No app download needed. Contaminant detection If moisture or debris is detected in your USB port, a notification will be sent to you and accessories will not function. Priotize notifications With Android 10, you can organize and prioritize notifications by marking them as "silent" or "alerting". Silent and alerting notifications are separated in the notifications bar, making it easier for you to see what needs your attention Manage notifications It's easier to find and manage notifications Settings straight from the notifications panel. Just pull it down, scroll to the bottom and tap manage in the bottom left hand corner. NN API Updates: Android 10 introduces NN HAL 1.2 and updates to NN API. Neural Networks API new updates below AhardwareBuffer BurstExecutions and Fast Message Queues Compilation Caching Device Discover y and Assignment Sensors- HAL2.0 (Fast message queues) Sensors HAL 2.0 is available in Android 10 and higher for new and upgraded devices. Sensors HAL 2.0 is based on Sensors HAL 1.0 but has several key differences, which prevents it from being backwards compatible. Sensors HAL 2.0 uses Fast Message Queues (FMQ) to send sensor events from the HAL into the Android Sensors Framework. Sensors off Android 10 includes a developer setting to shut off all sensors on a device. This feature helps developers test their app’s functionality in situations where those sensors become unavailable, and also gives users a way to control the sensors in their device. Modular system components Android 10 modularizes some Android system components and enables them to be updated outside of the normal Android release cycle. Java_sdk_library Android 10 introduces java_sdk_library, a new build rule to fix compatibility issues for shared Java libraries. Device manufacturers can use this mechanism for their own shared Java libraries to maintain backward compatibility for their APIs.