Android Q Beta 1 — Обзор изменений для разработчиков

Kirill Rozov
Mar 17, 2019 · 10 min read

Хотите узнать больше интересных новостей из мира Android разработки — подписывайтесь на Telegram канал Android Broadcast

13 марта 2019 Google представил первую beta версию Android Q. Всего планируется 6 beta версий перед релизом, который состоится в 3-м квартале 2019. Как всегда, самое сладкое нас будет ждать в Beta 3, которую представят с открытием Google I/O 2019.

План выхода версий Android Q

Вектор изменений в новой версии Android направлен на улучшение безопасности: обновление системы разрешений, ограничение доступа к файлам на внешнем хранилище, больше возможностей пользователю для контроля доступа приложений к различным данным и выполнению операций. Одно из нововведений — поддержка сгибаемых смартфонов, но его не представляется возможным проверить из-за отсутствия устройства или эмулятора.

Уже сейчас обладатели Pixel любого поколения могут установить бета версию, причем в этом году ее уже можно получить по воздуху. Для этого вам надо вступить в Android Beta Program.

Не рекомендую ставить эту версию Android на свое личное устройство, так как прошивка имеет известные проблемы и не готова для повседневного использования.

Давайте подробнее рассмотрим, что изменится для разработчиков при адаптации приложения для Android Q.

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

Доступ к файлам

Изменения затрагивают способы чтения/записи файлов на внешнем хранилище и безопасность данных:

Ограничения запуска Activity из фона

Чтобы не мешать пользователю, в новой версии Android теперь нельзя простым вызовом startActivity(Intent) запустить новую Activity. Приложение в Android Q может запустить Activity в случае если:

  • Приложение имеет видимое окно, например Activity с которой взаимодействует пользователь.

Замечание: приложение не считается видимым, если не имеет видимых Activity и имеет только Foreground Service.

Ограничения применяются для всех приложений, независимо от targetSdk вашего приложения. Вместо запуска Activity предлагается показывать уведомления со всей необходимой информацией для пользователя.

Ограничения доступа приложений к местоположению пользователя

Объявление Foreground Service, который имеет доступ к геопозиции

Изменения в данных и идентификаторах

Изменения в данной категории касаются всех приложений, независимо от targetSdk≤ 28.

Прочие ограничения

Изменения в системных разрешениях

Новые функции и API в Android Q

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

Wi-Fi и Bluetooth

Телефония

Медиа и графика

C Dynamic Depth вы можете сделать эффекты blur и boken в вашем приложение
  • Поддерка Vulkan 1.1.

Settings Panels

Новое API в Android Q — Settings Panel, которое позволяет показывать настройки пользователю в контексте вашего приложения. Это убирает необходимость выхода пользователя из вашего приложения, чтобы включить NFC или подключиться к точке доступа.

Пример работы Settings Panel на пример Chrome

Сейчас в настройках можно сконфигурировать подключение к интернету, NFC и громкость. Кастомизировать диалог нельзя, он системный.

Роли (Roles)

В Android Q представлено стандартное средство — роли. Механизм позволяет задавать в системе приложение по умолчанию для определенной функции — роли. Это позволяет ОС предоставлять приложению расширенный доступ к системным функциям, основываясь на распространненых сценариях использования приложения. Каждая роль представляет собой один сценарий, например проигрывание музыки, просмотр фотографий в галерее или отправку SMS сообщений.

В Android Q Beta 1 есть следующие роли:

Внимание: список ролей и функций, соответствующих им, может измениться в будущих Beta версиях

Для того, чтобы получить роль, приложение должно соответствовать опеределенным требованиям. Если приложение потеряет свою роль, это вызовет потерю соответствующего доступа.

Больше подробностей читайте здесь.

Улучшения в Sharing

Sharing Shortcuts API

Механизм Direct Share API заменён новым Sharing Shortcuts API. Sharing Shortcut API позволяет вместо получения результатов по запросу публиковать их заранее, работая по аналогии с ShortcutManager. Это решает проблему низкой скорости Direct Share, так как старый механизм работал по принципу Pull, а новый — по Push.

Sharing Shortcut API очень похож по работе с ShortcutManager, поэтому авторы API просто расширили ShortcutInfo чтобы упростить работу с этими API.

Пример работы Sharing Shortcut

Больше подробностей о Sharing Shirtcuts API можно найти здесь.

Direct Share останется работать, но будет иметь более низкий приоритет, чем Sharing Shortcuts.

Android Runtime (ART)

  • Улучшение в производительности ART, которое позволяет ускорить запуск приложений и потреблять меньше памяти, без необходимости модификации чего либо со стороны разработчиков.
  • ART больше не позволяет выполнять dex2oat из процесса приложения, теперь только система может генерировать oat файлы.

Прочие изменения

Важно! Многие изменения еще не активированы, так как первая Beta предназчена только ознакомления разработчиков с изменением поведения ОС. Их можно включить через ADB либо в Developers Options.


Очень много интересных изменений происходят внутри Android SDK и не освещаются подробно. Я решил покопаться в API Diff Report и рассказать о том, что я обнаружил

Важно: информации о некоторых классах/интерфейсах очень мало и она может измениться в будущих Beta.

Новые классы

ZygotePreload

ZygotePreload — это интерфейс, который должен реализовывать класс, отвечающий за предзагрузку кода и данных приложения, которые будут доступны всем изолированным Service-ам, которые укажут в AndroidManifest android:useAppZygote=”true”.

Media API 2

В пакете android.media добавлены классы MediaPlayer2, MediaSession2, MediaController2 и пр. с версией “2” в конце имени. Суть отличий пока я найти не смог, ждем Google I/O.

RecoverableSecurityException

Новый exception RecoverableSecurityException, которые расширяет SecurityException и содержит информацию как пользователь может исправить проблему.

StatusBarManager

StatusBarManager дает возможность управлять Status Bar из приложения

Android Parcel

Добавлена поддержка boolean, ArrayMap<String, *> и List<Parcelable>

FileUtils

Файловые утилиты для копирования данных и закрытия некоторых источников, игнорируя ошибки.

android.graphics.font

Новый пакет, содержащий классы по работе со шрифтами: созданием, получением данных из них. Также появилась возможность получить системные шрифты.

Systrace

В класе Trace добавлена возможность записи выполнения асинхронных секций с помощью beginAsyncSection(String methodName, int cookie) и задание счетчика с setCounter (String counterName, long counterValue).

Deprecated

Notification

Добавлена возможность задавать системе может ли она генерировать action на основе контекста, например, для ответа на сообщение.

Одна из интересных новых API NotificationManager.setNotificationDelegate(String deleage), который позволяет задать приложение, которое может постить уведомления от имени вашего приложения. При этом запуск вашего приложения происходить не будет.

ZenPolicy

ZenPolicy определяет разрешать ли определенным уведомлениям проигрывать звуки и показывать визуальные эффекты, когда устройство находиться в “Do Not Disturb” режиме. К сожалению, я не смог найти где применяется этот класс.

Developers Options

Также произошло немного изменений в Developers Options:

  • Невозможно принудительно задать темную тему. Настройка была удалена. Теперь это можно сделать только через adb

В заключение скажу, что обновление ОС получилось довольно интересным. Я считаю, что Google, начиная с Android 6 Marshmallow, взяла правильный курс на более строгий доступ к функционалу системы сторонними приложениями и увеличению безопасности работы пользователя, что заставляет разработчиков делать более качественный и безопасный софт. Также улучшению системы способствует то, что Google заставляет разработчиков раз в год адаптировать приложения под более новые версии ОС. Остается дождаться Google I/O 7–9 мая, чтобы узнать самые интересные анонсы, касательно Android Q и других продуктов Google.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store