Notification channels are required
Every notification must belong to a channel, and channel importance controls user-visible behaviour.
What to doCreate channels at startup and assign each notification to one.
Picture-in-picture
Android 8.0 was the release where Google finally restructured the platform to make updates possible.
Vendor code and platform code were intertwined, so updating the platform meant rebuilding the device.
Project Treble split the vendor implementation behind HIDL and a versioned interface. Android 8.0 also added notification channels, background execution limits, picture-in-picture and adaptive icons.
The release that made Android updatable in principle.
What changed underneath the APIs. These are the changes this site's architecture modules explain in depth.
The full archive has every recorded change with its migration advice.
Every notification must belong to a channel, and channel importance controls user-visible behaviour.
What to doCreate channels at startup and assign each notification to one.
Background services are stopped shortly after the app leaves the foreground, and most implicit broadcasts are banned.
What to doUse foreground services or JobScheduler for work that must continue.
Apps receive location updates less frequently in the background.
What to doUse a foreground service with the location type for continuous tracking.
Launchers can mask app icons into different shapes.
What to doProvide adaptive icons with a foreground and background layer.
The system-wide unknown-sources setting is replaced by per-app install permission.
What to doUse the package installer intent and handle the permission flow.
File URI exposure is detected and throws FileUriExposedException.
What to doUse FileProvider to share files.
Notifications have importance levels that control sound and visibility.
What to doSet importance correctly per channel.
Even apps not targeting 8.0 see some service restrictions.
What to doMove background work to scheduled jobs.
ANSWER_PHONE_CALLSdangerousBIND_AUTOFILL_SERVICEsignatureBIND_VISUAL_VOICEMAIL_SERVICEsignature|privilegedINSTANT_APP_FOREGROUND_SERVICEsignature|development|instant|appopMANAGE_OWN_CALLSnormalREAD_PHONE_NUMBERSdangerousREQUEST_COMPANION_RUN_IN_BACKGROUNDnormalREQUEST_COMPANION_USE_DATA_IN_BACKGROUNDnormalREQUEST_DELETE_PACKAGESnormalThis release shipped on Linux kernel versions 4.4. Kernel versions vary by device.