Random Musings on the Android 15 Developer Preview 1

Wow, it’s February again already?

When Google releases a new developer preview, I rummage through the API differences report, the high-level overviews, and even the release blog post, to see if there are things that warrant more attention from developers. I try to emphasize mainstream features that any developer might reasonably use, along with things that may not get quite as much attention, because they are buried in the JavaDocs.

Last year, a common complaint was how small Android 14 felt. This year, Android 14 seems huge by comparison. Android 15 DP1 is so small, Google did not bother writing a high-level overview of the changes, or at least it has not been published in an obvious location. Google usually does a bit of “sandbagging” in early developer previews, preferring to talk about changes one release later than when they are introduced. Still, this total lack of docs is rather stunning.

What Gives Me Security Concerns

AccessibilityService has long been used for things other than accessibility. Google tried for a while to enforce this at the Play Store level, but if I recall correctly they backed off.

AccessibilityService now offers the ability to attach overlays to displays (and to windows). These are designed for UI that controls the accessibility itself, apparently.

I worry a bit that users will enable accessibility for an app for other reasons (e.g., help with playing some game), then get bitten by tapjacking attacks initiated by these overlays. Hopefully, these overlays have system-supplied “chrome” that helps prevent this.

See also getOverlaySupport() on Display.

What Claims to Have Integrity

FileIntegrityManager has been around for a few years, but without a lot of functionality. Now we can call setupFsVerity() for a File, enabling some amount of tampering detection. However, the documentation for applying it (in setupFsVerity()) is seriously confusing.

What We Also Got In Android 14, Sorta

Android 14’s QPR2 added support for partial screen sharing, powered by MediaProjection. This change is also folded into Android 15 DP1.

What Else Is Interesting

PackageManager offers parseAndroidManifest(). This is designed for APKs that perhaps have not yet been installed. You get an XmlResourceParser back, letting you traverse the manifest akin to using XmlPullParser.

SystemClock now offers uptimeNanos(), the time since last boot, measured in nanoseconds.

JobManager, via JobInfo, now offers debug tags and trace tags for help with logging and traces.

MediaRoute2Info now supports a bunch of additional remote media routes: to cars, computers, game consoles, other phones, watches, tablets, or docked tablets.

We can now create notifications that have TV extensions, presumably for cases where a phone is tied to an Android TV device.

The parade of screen densities continues, as there is now support for a 390-dpi density.