Posted by Dave Burke, VP of Engineering
Since the first launch in 2008, the Android project has thrived on the
incredible feedback from our vibrant ecosystems of app developers and device
makers, as well as of course our users. More recently, we've been pushing hard
on improving our engineering processes so we can share our work earlier and more
openly with our partners.
So, today, I'm excited to share a first developer preview of the next
version of the OS: Android O. The usual caveats apply: it's early days, there
are more features coming, and there's still plenty of stabilization and
performance work ahead of us. But it's booting :).
Over the course of the next several months, we'll be releasing updated developer
previews, and we'll be doing a deep dive on all things Android at Google I/O in May. In the meantime,
we'd love your feedback on trying out new features, and of course testing your
apps on the new OS.
What's new in O?
Android O introduces a number of new features and APIs to use in your apps.
Here's are just a few new things for you to start trying in this
first Developer Preview:
Background limits: Building on the work we began in Nougat,
Android O puts a big priority on improving a user's battery life and the
device's interactive performance. To make this possible, we've put additional
automatic limits on what apps can do in the background, in three main areas:
implicit broadcasts, background services, and location updates. These changes
will make it easier to create apps that have minimal impact on a user's device
and battery. Background limits represent a significant change in Android, so we
want every developer to get familiar with them. Check out the documentation on
execution limits and background
location limits for details.
Notification channels: Android O also introduces notification
channels, which are new app-defined categories for notification content.
Channels let developers give users fine-grained control over different kinds of
notifications — users can block or change the behavior of each channel
individually, rather than managing all of the app's notifications together.
Notification channels let users control your app's notification categories
Android O also adds new visuals and grouping to notifications that make it
easier for users to see what's going on when they have an incoming message or
are glancing at the notification shade.
Autofill APIs: Android users already depend on a range of
password managers to autofill login details and repetitive information, which
makes setting up new apps or placing transactions easier. Now we are making this
work more easily across the ecosystem by adding platform support for autofill.
Users can select an autofill app, similar to the way they select a keyboard app.
The autofill app stores and secures user data, such as addresses, user names,
and even passwords. For apps that want to handle autofill, we're adding
new APIs to implement an Autofill service.
PIP for handsets and new windowing features: Picture
in Picture (PIP) display is now available on phones and tablets, so users
can continue watching a video while they're answering a chat or hailing a car.
Apps can put themselves in PiP mode from the resumed or a pausing state where
the system supports it - and you can specify the aspect ratio and a set of
custom interactions (such as play/pause). Other new windowing features include a
app overlay window for apps to use instead of system alert window, and multi-display
support for launching an activity on a remote display.
Font resources in XML: Fonts
are now a fully supported resource type in Android O. Apps can now use fonts in
XML layouts as well as define font families in XML — declaring the font style
and weight along with the font files.
Adaptive icons: To help you integrate better with the device
UI, you can now create
adaptive icons that the system displays in different shapes, based on a mask
selected by the device. The system also animates interactions with the icons,
and them in the launcher, shortcuts, Settings, sharing dialogs, and in the
Adaptive icons display in a variety of shapes across different device models.
Wide-gamut color for apps: Android developers of imaging apps
can now take advantage of new devices that have a wide-gamut color capable
display. To display wide gamut images, apps will need to enable a flag in their
manifest (per activity) and load bitmaps with an embedded wide color profile
(AdobeRGB, Pro Photo RGB, DCI-P3, etc.).
Connectivity: For the ultimate in audio fidelity, Android O now
also supports high-quality Bluetooth audio codecs such as LDAC codec. We're also adding new Wi-Fi features as well, like
Aware, previously known as Neighbor Awareness Networking (NAN). On devices with
the appropriate hardware, apps and nearby devices can discover and communicate
over Wi-Fi without an Internet access point. We're working with our hardware
partners to bring Wi-Fi Aware technology to devices as soon as possible.
The Telecom framework is extending ConnectionService APIs to enable third party
calling apps integrate with System UI and operate seamlessly with other audio apps.
For instance, apps can have their calls displayed and controlled in different kinds
of UIs such as car head units.
Keyboard navigation: With the advent of Google Play apps on Chrome
OS and other large form factors, we're seeing a resurgence of keyboard
navigation use within these apps. In Android O we focused on building a more
reliable, predictable model for "arrow" and "tab" navigation that aids both
developers and end users.
AAudio API for Pro Audio: AAudio is a new native API that's
designed specifically for apps that require high-performance, low-latency audio.
Apps using AAudio read and write data via streams. In the Developer Preview
we're releasing an early version of this new API to get your feedback.
WebView enhancements: In Android Nougat we introduced an
optional multiprocess mode for WebView that moved the handling of web content
into an isolated process. In Android O, we're enabling multiprocess mode by
default and adding an API
to let your app handle errors and crashes, for enhanced security and
improved app stability. As a further security measure, you can now opt in your
app's WebView objects to verify
URLs through Google Safe Browsing.
Java 8 Language APIs and runtime optimizations: Android now supports
several new Java Language APIs, including the new java.time API. In addition,
the Android Runtime is faster than ever before, with improvements of up to 2x on
some application benchmarks.
Partner platform contributions: Hardware manufacturers and
silicon partners have accelerated fixes and enhancements to the Android platform
in the O release. For example, Sony has contributed more than 30 feature
enhancements including the LDAC codec and 250 bug fixes to Android O.
Get started in a few simple steps
First, make your app compatible to give your users a seamless
transition to Android O. Just download a device
system image or emulator system image, install your current app, and test --
the app should run and look great, and handle behavior
changes properly. After you've made any necessary updates, we recommend
publishing to Google Play right away without changing the app's platform
Building with Android O
When you're ready, dive in to O in depth to learn about
everything you can take advantage of for your app. Visit the O Developer
Preview site for details on the preview
APIs, and support
Plan how your app will support background
limits and other
changes. Try out some of the great new features in your app -- notification
resources in XML, autosizing
TextView, and many
others. To make it easier to explore the new APIs in Android O, we've
brought the API
diff report online, along with the Android
O API reference.
The latest canary version of Android Studio 2.4
includes new features to help you get started with Android O. You can download
and set up the O preview SDK from inside Android Studio, then use Android O's XML
font resources and autosizing
TextView in the Layout Editor. Watch for more Android O support coming in
the weeks ahead.
We're also releasing an alpha
version of the 26.0.0 support library for you to try. This version adds new APIs and bug fixes and increases the minSdkversion to 14.
The O Developer Preview includes an updated SDK with system images for testing
on the official Android Emulator and on Nexus 5X, Nexus 6P, Nexus Player, Pixel,
Pixel XL and Pixel C devices. If you're building for wearables, there's also an
emulator for testing Android Wear 2.0 on Android O.
We plan to update the preview system images and SDK regularly throughout the O
Developer Preview. This initial preview release is for developers
only and not intended for daily or consumer use, so we're making it
available by manual download and flash only. Downloads
and instructions are here.
As we get closer to a final product, we'll be inviting consumers to try it out as
well, and we'll open up enrollments through Android Beta at that time. Stay
tuned for details, but for now please note that Android Beta is not
currently available for Android O.
Give us your feedback
As always, your feedback is crucial, so please let us
know what you think — the sooner we hear from you, the more of your
feedback we can integrate. When you find issues, please report them
here. We've moved to a more robust tool, Issue Tracker, which is also used
internally at Google to track bugs and feature requests during product
development. We hope you'll find it easier to