Android 11 был официально выпущен несколько дней назад (8 сентября 2020 г.)

При разработке этого обновления команда Google в основном сосредоточилась на:

  • Человекоцентричный подход к общению,
  • Элементы управления, позволяющие пользователям быстро получать доступ ко всем своим интеллектуальным устройствам и управлять ими.
  • Конфиденциальность, чтобы предоставить пользователям больше возможностей контролировать обмен данными на устройствах.

Несколько дней назад вышел Android 11 (R), и по мере того, как вы читаете, это означает, что вам, вероятно, понадобится краткое введение, которое важно для вас как разработчика. Основные изменения и функции, которые могут повлиять на ваши приложения:

  • Одноразовое разрешение. Теперь пользователи могут предоставлять одноразовое разрешение на доступ к местоположению, микрофону устройства и камере.
  • Доступ к внешнему хранилищу. Приложения больше не могут получать доступ к файлам других приложений во внешнем хранилище.
  • Усиленный распределитель Scudo - теперь Scudo является распределителем памяти кучи для собственного кода в приложениях.
  • Средство очистки файловых дескрипторов - теперь Fdsan включен по умолчанию для обнаружения проблем с обработкой файловых дескрипторов для машинного кода в приложениях.

В настоящее время это обновление получают только телефоны Pixels, но список устройств должен быстро увеличиваться.

Кроме того, вместо обновления целевого SDK приложения разработчики теперь могут включать или отключать каждое отдельное изменение в Android 11. Параметры можно найти в разделе Система ›Дополнительно› Параметры разработчика ›Изменения совместимости приложений.

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

Вы также можете посмотреть обзор Google функций, которые влияют на нас - разработчиков:

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

В этом обновлении основное внимание уделяется конфиденциальности, поэтому давайте рассмотрим некоторые изменения в этой области:

Одноразовые разрешения и разрешения для фона / уровня обслуживания

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

Также в отношении местоположения, микрофона и камеры устройства потребуются некоторые дополнительные изменения, если мы планируем использовать их в фоновом режиме (из службы переднего плана). Требуется разрешение доступа к местоположению в фоновом режиме. Для доступа к камере и микрофону в фоновом режиме требуется особый тип службы, определенный в манифесте:

<manifest>
    ...
    <service ... android:foregroundServiceType="location|camera" />
</manifest>

Кроме того, если ваше приложение ориентировано на Android 11 или выше и не используется в течение нескольких месяцев, система защищает данные пользователя, автоматически сбрасывая конфиденциальные разрешения времени выполнения, которые пользователь предоставил вашему приложению. Это действие имеет такой же эффект, как если бы пользователь просмотрел разрешение в настройках системы и изменил уровень доступа вашего приложения на Запретить.

Обновления хранилища

Android 11 еще больше улучшает платформу, обеспечивая лучшую защиту приложения и пользовательских данных на внешнем хранилище. Начиная с этой версии ОС, приложения, использующие модель хранилища с заданной областью, могут получить доступ только к своим файлам кеша для конкретных приложений (для управления хранилищем устройства следуйте инструкциям как запросить свободное пространство). Приложения также не могут создавать свои собственные каталоги для конкретных приложений на внешнем хранилище. Чтобы получить доступ к каталогу, который система предоставляет вашему приложению, вам необходимо вызвать getExternalFilesDirs ().

Видимость пакета

Теперь приложения могут запрашивать и взаимодействовать с другими приложениями, которые пользователь установил на устройстве. Используя элемент ‹queries›, приложения могут определять набор других пакетов, к которым они могут получить доступ. Если ваше приложение предназначено для Android 11, вам может потребоваться добавить элемент ‹queries› в файл манифеста приложения. В элементе ‹queries› вы можете указать пакеты по имени, подписи намерения или по полномочиям поставщика. Например:

<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
</manifest>

Я также рекомендую посмотреть видео о создании конфиденциального приложения:

Другие интересные особенности

Доступ к общим наборам данных

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

Взаимодействие с людьми и разговоры

Android 11 представляет собой отдельный раздел поверх панели уведомлений, содержащий только разговоры с людьми в реальном времени.

Следующая функция - пузыри, которые можно запускать из уведомлений в разделе Разговоры. Пузырь беседы запускается автоматически, если они помечены как важные или всплывают на панели уведомлений.

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

Есть очень полезное видео о функциях, связанных с разговорами:

Резюме

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