Random Musings on the O Developer Preview 3

Each time Google releases a new developer preview, I poke at the API differences report and the high-level overviews, to see if there are things that warrant more attention from developers, with an emphasis on mainstream features that any developer might reasonably use. I also tend to emphasize things that may not get quite as much attention, because they are buried in the JavaDocs.

So, here are my notes on O Developer Preview 3 (ODP3).

Wait, Didn’t We Just Have ODP2?

Yes. In fact, I am somewhat surprised to be writing another developer preview musings post already.

Overall, ODP3 is mostly cleanups regarding names — the sort of thing that gets caught at a code review.

Of particular note, since the APIs are finalized, Google is now admitting that the next version of Android is 8.0 and that the API level is 26. None of that is unexpected, but these “oh, let’s keep the developers guessing and make it a pain to test backwards compatibility” games are part and parcel of these developer previews.

What Did I Say Last Time That Is No Longer a Concern?

A bit less than 3 weeks ago, I published my random musings on ODP2, which in turn followed my ODP1 musings.

Some things from the previous developer previews are now gone, such as:

  • onMovedToDisplay(), added in ODP2 to Activity and View
  • getMaxNumPictureInPictureActions(), added in ODP1 to ActivityManager
  • some, but not all, of the IpSec... classes added in ODP2
  • getUuid() and putUuid() from Bundle

What’s Interesting in the Release Notes

Each developer preview has its section of the release notes. In the case of ODP3, nothing leaps out at me.

What’s Interesting in the API Diffs Report?

Where most of the “under the covers” stuff shows up is in seeing the diffs between the ODP2 and ODP3 APIs.

Of note:

  • Autofill underwent yet another round of changes (which I find interesting, considering they still have not materially responded to two of my security bugs regarding autofill). Of particular note, there is now ACTION_REQUEST_SET_AUTOFILL_SERVICE on Settings, which appears to allow you to ask the user to enable your app as the user’s autofill service.

  • I am curious as to what setAppVerificationBundle() on ActivityOptions really does. It is described as “Set the Bundle that is provided to the app installer for additional verification if the call to startActivity(Intent) results in an app being installed”. It is unclear what this “additional verification” is and what would go into this Bundle.

What’s Interesting When You Try to Use ODP3?

Android Studio 2.3.3 — released in tandem with ODP3 — now lets you work with Android O. ODP1 worked with Android Studio 2.x; ODP2 worked… less well.

You can also download the Android 8.0 SDK bits in Android Studio without having to switch to the canary channel.

What To Expect Now?

Since the API is supposed to be finalized, ODP4, if/when it ships, should not have any API changes. However, this also impacts Google’s ability to address bugs, as bug fixes that would result in API changes would need to get pushed out to an O MR1 release or something.

Hence, it is rather unlikely that anything notable will change in ODP4 or in the final shipping Android O from what we see today. At most, some things might become deprecated or be stubbed out (e.g., the API calls are there but have no effect), if something gets canned late in the development cycle.