Наряду с новыми функциями и возможностями Android O содержит множество системных изменений и изменений в API.  Часть изменений затронет все приложения, которые будут работать в Android O, несмотря на версию API, под которую они разрабатывались,  некоторые изменения необходимо учитывать только для тех приложений, которые будут разрабатываться под Android O.

Изменения, касаемые всех приложений, которые будут запущены на Android O

Ограничения фонового выполнения приложений 

В качестве одного из изменений, внесенных в Android O, для повышения времени автономной работы, когда приложение переходит в состояние кэширования без активных компонентов, система отключает все блокировки на «засыпание» ОС, которые требуются приложению.

Ограничение на геолокацию в фоне

Обновление местоположения в фоне будет происходить реже для всех приложений (включая Google Play Services), работающих в Android O.  В частности, эти изменения затронули следующие API для работы с местоположением:

Android O также содержит следующие изменения в методах:

  • NotificationManager.startServiceInForeground() запускает сервис в режиме foreground, при этом старый метод запуска сервиса в режиме foreground более не работает.
  • Метод startService() теперь выбрасывает исключение IllegalStateException в случае, если приложение, разработанное под Android O, пытается запустить сервис, когда работа сервиса ограничена.

Для адаптации приложений для корректной работы в Andorid O разработчикам необходимо:

  • убедиться в том, что используется последнее SDK для работы с местоположением
  • убедиться в том, что приложение при использовании нового SDK местоположения отрабатывает корректно все возможные ситуации
  • изучить возможности  Fused Location Provider (FLP) и Geofencing, попробовать использовать для решения задач работы с местоположением.

Дополнительно об изменениях, связанных с работой с местоположением пользователя, можно ознакомится  тут.

Bluetooth

При работе с bluetooth изменения коснутся метода ScanRecord.getBytes()

Ввод данных и навигация по приложению

В Android O  добавлена возможность организовать навигацию в приложении, используя физическую клавиатуру, подключенную к устройству. Как встроить в приложение поддержку навигации посредством клавиатуры можно изучить тут

Безопасность

Android O содержит следующие изменения, связанные с безопасностью:

  • Больше не поддерживается  SSLv3
  • При установлении соединения HTTPS с сервером, который неправильно реализует  протокол TLS необходимой версии, HttpsURLConnection не будет пытаться использовать ранние версии протокола TLS для повторной попытки установки соединения.
  • Android O применяет фильтр Secure computing (SECCOMP) для всех приложений. Список разрешенных системных вызовов ограничен библиотекой bionic.
  • Объекты WebView приложения теперь работают в многопроцессорном режиме. Веб-контент обрабатывается в отдельном изолированном процессе от процесса приложения для повышения безопасности.

Конфиденциальность

Android O включает следующие изменения, связанные с обеспечением конфиденциальности:

  • Обработка идентификаторов:
    — значения ANDROID_ID теперь ограничены для каждого приложения, а не для каждого пользователя;
    — значение ANDROID_ID уникально для каждой комбинации имени пакета приложения, подписи, пользователя и устройства. Для  двух приложений, запущенных на одном устройстве, значениеANDROID_ID будут разными.
    — значение ANDROID_ID не меняется при удалении или повторной установке пакета, если имя пакета и ключ подписи совпадают:
    — значение ANDROID_ID не изменяется, если ключ подписи пакета изменяется из-за обновления;
    — идентификатор Widevine ID зависит от приложения.
  • Запрос системного свойства net.hostname дает нулевой результат.

Работа с сетью HTTP (S)

Android O содержит ряд изменений, связанных с работой с сетью:

  • Запросы OPTIONS без тела должны иметь заголовок Content-Length: 0. Раньше у них не было заголовка Content-Length.
  • HttpURLConnection нормализует URL-адреса, содержащие пустые пути, добавляя слеш после имени хоста . Например, преобразует http://example.com в http://example.com/.
  • URI не могут содержать пустые метки.
    Ранее платформа поддерживала способ обхода пустых меток в именах узлов. Разработчики, использующие API неправильно, увидели бы сообщение ADB: «URI example..com имеет пустые метки в имени хоста. Это неправильно и не будет принято в будущих версиях Android». Android O устраняет это решение; Система возвращает null для некорректных URI.

Android O  содержит еще множество изменений, которые будут описаны в ближайшее время.