Android 7.1 is the Nougat update that shipped first on Google’s own phone, the Pixel, two months before any Nexus got it. For users it brought Night Light and seamless updates. For developers, API 25 added app shortcuts on the launcher icon, round icons and a way for keyboards to send images.
At a glance
| Version | Android 7.1 (7.1.1 and 7.1.2 kept the same API level) |
| API level | 25 |
| Name | Nougat, public (same name as 7.0) |
Build.VERSION_CODES | N_MR1 |
| Play accepts API 25 apps | 19 October 2016, with Developer Preview 1 |
| Release | On the Pixel, October 2016. Nexus rollout of 7.1.1 began 5 December |
| Launch devices | Pixel and Pixel XL, announced and opened for pre-order 4 October 2016 |
| Google Play target-API deadline | None. Play’s target-API rule started in 2018, at API 26 |
Google announced the Pixel on 4 October 2016 with “Android 7.1 Nougat” on board. The first Pixel factory images, build NDE63H, are dated October 2016. On 11 October Google said a developer preview for Nexus devices would come “later this month” and the final release “in early December”. The preview’s first build, on 19 October, already had the final API 25 and opened Play to apps targeting it. The two developer previews and the two 7.1.2 betas are the four parts that follow this overview.
7.1 is a point release on top of Android 7.0. Everything 7.0 introduced, from multi-window to file-based encryption, is covered there.
Three releases, one API level
| Release | Date | Devices |
|---|---|---|
| 7.1 | October 2016 | Pixel and Pixel XL only |
| 7.1.1 | December 2016 | Pixel, Pixel XL, Nexus 5X, 6P, 6, 9, Nexus Player, Pixel C and General Mobile 4G (Android One). Source pushed to AOSP the same day |
| 7.1.2 | April 2017 | Pixel, Pixel XL, Pixel C, Nexus 5X, 6P and Nexus Player. Google called it a maintenance update: bug fixes, optimizations and a few changes for carriers and users |
The Nexus 6 and Nexus 9 never got 7.1.2. Their last factory images are 7.1.1 builds from October 2017. In 7.1.2 the Pixel C got the Pixel Launcher, round icons and a tablet recent-apps grid, and every device got a “Battery usage alerts” screen, Ars Technica reported.
What it brought
- App shortcuts. A long press on a launcher icon shows actions that jump
into the app, each one backed by an intent. Static shortcuts live in
res/xml/shortcuts.xml, referenced from the launcher activity with a<meta-data android:name="android.app.shortcuts">. Dynamic ones are published at runtime throughShortcutManager(Context.SHORTCUT_SERVICE). Google’s 7.1 page allowed up to five per app, and some launchers show fewer. - Round icons. A new
android:roundIconattribute. The launcher asks for an icon, and the framework returnsandroid:iconorandroid:roundIcondepending on the device build. The Pixel launcher used the round one. - Image keyboards. The Commit Content API lets a keyboard send a GIF, sticker or image straight into a text field. The flow is in Permissions, because it rests on a URI grant. It also shipped in support library 25.0.0 for older versions.
- Night Light. Tints the screen amber on a schedule or at sunset. It runs through the Hardware Composer HAL 2.0 instead of a GL shader, so it needs driver support. Google’s Ian Lake said that is why Nexus phones would not get it, as reported by Android Police.
- Storage manager intent.
StorageManager.ACTION_MANAGE_STORAGEopens the system “Free up space” screen, so an app short of space can let the user clear room. - Demo user.
UserManager.isDemoUser()tells an app it runs on a store demo unit. AOSP dates system-level retail demo mode to 7.1.1. - Daydream VR. VR mode came in 7.0. 7.1 added
ActivityManager.setVrThread(): one thread per process that the scheduler favours while the app is in VR mode. Google launched its Daydream headset at the same 4 October event. - Smaller additions. Gender parity for profession emoji (check support with
Paint.hasGlyph()), a context URL and title for live wallpaper metadata, multi-endpoint calling and Visual Voicemail source types for carriers, and Wear densitiesDENSITY_260,DENSITY_300andDENSITY_340.
What was Pixel, not Android
Ars Technica listed what Google kept for the Pixel: the Pixel Launcher with its swipe-up app drawer, Google Assistant, unlimited original-quality Google Photos backup, the support tab in Settings and the new navigation buttons. Nexus devices on 7.1.1 got the platform list instead. The Nexus 5X and 6P also missed the fingerprint swipe to open notifications. Android Police reported that their sensors could not do it, but Google’s 7.1.2 changelog lists “Fingerprint swipe on 5X/6P”, as reported by Ars Technica.
Security and privacy
- No new hardening list. Google’s “Security enhancements” page has a 7.0 entry and nothing for 7.1. The platform work is in 7.0.
- Seamless updates. The Pixels were the first phones with A/B system updates: two system slots, one updated in the background while the phone stays in use. If the new slot fails to boot, the device falls back to the old one. The 7.1 CDD added that devices “SHOULD support A/B system updates”; the 7.0 CDD did not say so.
- Updates from Google. Google said Pixel phones get software and security updates “as soon as they’re available, directly from Google”. Ars Technica noted the promise covered two years of major OS updates.
- Storage manager may uninstall silently. The 7.1 CDD forbids anyone but
an app’s installer from uninstalling it without a prompt, with two
exceptions: the package verifier and the storage manager handling
ACTION_MANAGE_STORAGE. That second exception is new in 7.1. - End of security patches. The October 2019 security bulletin is the last that lists 7.1.1 and 7.1.2 among the updated AOSP versions. From November 2019 the oldest version listed is 8.0.
Permissions
No permission was added or removed in API 25. The API diff for the android
package touches only R.attr, where the shortcut and roundIcon attributes
live. Two features are guarded in other ways:
- Who reads shortcuts. Another app’s shortcuts are visible only to the
current launcher, checked by
LauncherApps.hasShortcutHostPermission(). Publishing your own needs no permission. - Keyboard content. The keyboard hands over a content URI, not the bytes.
It sets
INPUT_CONTENT_GRANT_READ_URI_PERMISSION, which grants the app a temporary read on that URI from API 25. On 7.0 and lower the flag is ignored and the keyboard has to grant access itself.
Google recommends that the keyboard’s provider is not exported
(android:exported="false") and grants URI permissions instead
(android:grantUriPermissions="true").
What changed for your app
All apps on Android 7.1
| Change | What to do |
|---|---|
Launchers may ask for android:roundIcon | Ship both android:icon and android:roundIcon. Image Asset Studio generates both |
| Long press on your icon can show shortcuts | Add static shortcuts in res/xml/shortcuts.xml, or dynamic ones with ShortcutManager |
| Dynamic shortcut calls are rate-limited for background apps | Update them from the foreground. Rate limiting resets when the app comes to the foreground |
| Dynamic shortcuts are not backed up | Re-publish them when the app first opens on a new device |
| Keyboards can commit images | Declare MIME types with EditorInfoCompat.setContentMimeTypes() and handle onCommitContent() |
| Keyboards on API 25 grant reads per URI | In an IME, set INPUT_CONTENT_GRANT_READ_URI_PERMISSION when SDK_INT >= N_MR1 |
| Not enough storage | Fire ACTION_MANAGE_STORAGE instead of failing |
Apps targeting API 25
Google published no behaviour changes tied to targeting API 25. Its 7.1 page has no changes section, and the preview post only advised targeting 25 to “test your app with compatibility behaviors disabled”. The work is opt-in: shortcuts, round icons and rich content.
What lasted
- App shortcuts are still the long-press menu. Android 8.0 added pinned
shortcuts with
requestPinShortcut(), and pinned ones have no count limit. Most launchers now show four at a time. - Round icons were replaced in Android 8.0 by adaptive icons, which the device masks to its own shape.
- Commit Content has a successor: Google calls Android 12’s
OnReceiveContentListenerits next version. It also takes content from the clipboard and from drag and drop. - A/B updates grew: streaming A/B in 8.0, and Virtual A/B replaced legacy A/B in Android 10.
- Night Light is still in AOSP, driven by
ColorDisplayManager. - Retail demo mode was rebuilt around demo users in Android 8.1. AOSP now says it is no longer supported since 8.1.
Worth knowing
- The constant’s comment in AOSP reads
N MR1: Nougat++. - 7.1 kept the 7.0 Easter egg, the cat-collecting Android Neko:
PlatLogoActivity.javais the same file at both release tags. - Google no longer guaranteed version updates to the Nexus 6 and 9 after October 2016, Ars Technica noted. Both got 7.1.1 anyway, and that is where they stopped.
- In 2016 Ars Technica found that Qualcomm was not supporting Nougat on the Snapdragon 800 and 801. The Fairphone 2 uses an 801 and still got an official 7.1.2 update in November 2018. Fairphone says it was the only 801 phone to make that upgrade.
Android 7.1 Developer Preview 1: API 25 final
19 October 2016. The first Nexus build of 7.1 came with API 25 already final, so developers could publish apps targeting it to Google Play the same day.
Read on its own: Android 7.1 Developer Preview 1: API 25 finalDeveloper Preview 1 brought Android 7.1 to Nexus devices on 19 October 2016, two weeks after the Pixel launched with it. Because 7.1 had already shipped on a phone, Google called this preview “beta quality” and said its goal was “to tease out any device-specific issues”.
| Release date | 19 October 2016 |
| Build | NPF10C |
| Devices | Nexus 5X, Nexus 6P and Pixel C, over the air through Android Beta |
| API status | Final: “We’ve finalized the new APIs as API Level 25” |
| Google Play | Open to apps compiled against, and optionally targeting, API 25 |
| SDK | API 25 platform and emulator images in Android Studio 2.2.2’s SDK Manager |
Unlike the Android 7.0 previews, this one did not start with unstable APIs.
The API 25 SDK was final from the first build, so an app built against it
needed no rebuild for the release. Google recommended setting
targetSdkVersion to 25 to test “with compatibility behaviors disabled”.
The preview shipped the developer features already on the Pixel: app
shortcuts, round icons and image keyboards. The Google APIs emulator image for
API 25 included the Pixel Launcher, to check round icons. The device images
included Messenger and Google Keyboard, which already used the image keyboard
API. Support library 25.0.0 came out with it, adding image keyboard support
back to API 13 and the BottomNavigationView widget.
On a Nexus 5X, 9to5Google found the Pixel’s user-side changes too: an extra tile in the top Quick Settings row, a Settings shortcut beside it, and a “Moves” screen with the double-twist camera gesture. Round icons did not appear there, even with the Pixel Launcher sideloaded. On 3 November Google added the preview to Firebase Test Lab virtual devices, free until the end of 2016.
Android 7.1 Developer Preview 2: 7.1.1 RC
22 November 2016. The last preview was a release candidate for Android 7.1.1, added the Nexus 9, and came with support library 25.0.1. The APIs did not change.
Read on its own: Android 7.1 Developer Preview 2: 7.1.1 RCDeveloper Preview 2, on 22 November 2016, was the last preview before Android 7.1.1. Google called it “a release candidate for Android 7.1.1”, with “near-final system behaviors and UI” and the latest bug fixes.
| Release date | 22 November 2016 |
| Build | NPF26F; NPF26H on the Pixel C |
| Devices | Nexus 5X, Nexus 6P, Nexus 9 and Pixel C |
| API status | Unchanged: the API 25 features “already introduced in Developer Preview 1” |
| Tools | Updated SDK build and platform tools, API 25 emulator images, support library 25.0.1 |
The Nexus 9 was the new device. Google had said in October that the preview would reach “other supported devices” by its end, and Android Police reported that Google’s preview timeline had listed the Nexus 6 and Nexus Player for this build. Both were dropped from it, though they still got the final 7.1.1. The Pixel and Pixel XL were not in the beta program and waited for the final release.
The Nexus 9 images were missing at first and appeared later that day, Android Police reported. Google offered factory images for this build but no OTA links, per 9to5Google; enrolled devices still received it over the air. Google’s plan was unchanged: 7.1.1 for every supported device in early December, with the source pushed to AOSP at the same time.
Android 7.1.2 Beta 1: a maintenance beta
30 January 2017. A public beta of the 7.1.2 maintenance release for Pixel, Pixel XL, Nexus 5X, Nexus Player and Pixel C. No new APIs; the Nexus 6 and 9 were left out.
Read on its own: Android 7.1.2 Beta 1: a maintenance betaOn 30 January 2017 Google opened a public beta of Android 7.1.2 through the Android Beta Program. Google described 7.1.2 as “an incremental maintenance release focused on refinements”: bug fixes, optimizations and “a small number of enhancements for carriers and users”. It stayed at API 25, with no new developer APIs.
| Release date | 30 January 2017 |
| Build | NPG05D; NPG05E on the Pixel and Pixel XL |
| Devices | Pixel, Pixel XL, Nexus 5X, Nexus Player and Pixel C |
| Status | Compatibility Test Suite (CTS) approved, so apps such as Android Pay worked |
The Nexus 6P was not in this build. Google said it was “preparing an update for Nexus 6P that we expect to release soon”. The Nexus 6 and Nexus 9 were not on the list for the beta or for the final release, and 9to5Google noted this was the first release to skip the Nexus 6.
Google’s release notes listed known issues: Quick Settings could disappear on the Pixel C, the Pixel Launcher could crash when searching with a physical keyboard attached, and some UI hangs and Wi-Fi instability. 9to5Google later reported that this build brought the Pixel’s fingerprint swipe for notifications to the Nexus 5X. Google promised the final release “in just a couple of months”.
Android 7.1.2 Beta 2: Nexus 6P joins
March 2017. The second 7.1.2 beta, build NPG47I, reached the Nexus 6P too, with the March security patch and the fingerprint swipe gesture. Google posted no announcement.
Read on its own: Android 7.1.2 Beta 2: Nexus 6P joinsThe second Android 7.1.2 beta came with no blog post from Google. Its build,
NPG47I, appears on Google’s 7.1.2 public beta download page for the Nexus
5X, Nexus 6P, Pixel C, Nexus Player, Pixel and Pixel XL. The date comes from
the press: 9to5Google reported the rollout on 20 March 2017.
| Release date | 20 March 2017, per 9to5Google; Google gave no date |
| Build | NPG47I on every device |
| Devices | Pixel, Pixel XL, Nexus 5X, Nexus 6P, Nexus Player and Pixel C |
| Security patch | March 2017, per 9to5Google |
This time the Nexus 6P was in the first wave. It had received the first beta only about three weeks earlier, 9to5Google noted. Beta 2 gave it the Pixel’s fingerprint swipe gesture, under Settings > “Moves”. 9to5Google also found a “Powered by Android” line on the Pixel boot screen. On the Pixel C it showed the Pixel Launcher, the Pixel’s white navigation buttons and a new grid of recent apps, still unfinished: apps could not be swiped away.
Nothing changed for developers. The final 7.1.2 followed in early April 2017, covered in the overview above.