Команда разработчиков Google Android провела АМА на Reddit, чтобы ответить на вопросы об Android 11. Вот что мы узнали о следующей версии ОС Android.
Вчера Google выпустил Андроид 11 Бета 2, предоставляя разработчикам окончательную версию SDK, NDK, интерфейсов приложений, поведения платформы и ограничений на интерфейсы, не относящиеся к SDK. Сегодня Google отвечает на вопросы, связанные с Android 11, в сообществе Reddit /r/AndroidDev. после ответов на вопросы на прошлой неделе. Вот краткое изложение всего, что мы узнали от Google AMA (Спроси меня что-нибудь).
Одна из самых ожидаемых функций Android 11 не будет доступна, когда ОС выйдет из бета-тестирования 8 сентября: прокрутка снимков экрана. Изначально планируется к запуску в Android 11Google теперь подтвердил, что эта функция «не подошла для R». Предварительная версия Android 11 для разработчиков 1 и все последующие версии DP и бета-версии имеют кнопку-заполнитель для создания прокручиваемого снимка экрана, который можно выводится вручную с помощью скрытой команды разработчика
, но нажатие кнопки просто отображает всплывающее сообщение о том, что эта функция «не реализована».Мы надеялись, что эта функция появится в бета-версии или даже в стабильной версии, но, похоже, этого не произойдет.
Понятно, что эта новость расстроит некоторых пользователей. В конце концов, многие OEM-производители уже много лет имеют эту функцию в своем программном обеспечении, так почему же Google так долго добавлял ее в телефоны Pixel? Как объяснил Дэн Сэндлер из команды Google System UI, проблема в том, что Google хочет сделать все правильно. Некоторые реализации прокрутки снимков экрана просто имитируют прокрутку, а затем объединяют несколько снимков экрана при движении экрана. Если вы когда-либо имели дело с автоматизацией пользовательского интерфейса на Android, вы знаете, что это не всегда работает, поскольку, как упоминает г-н Сэндлер, приложения могут использовать «стандартный RecyclerView или реализовать собственный механизм прокрутки с ускорением OpenGL». Поскольку Google планирует реализовать эту функцию не только для смартфонов Pixel, но и для всей экосистемы Android в рамках AOSP, им необходимо убедиться, что это сработает все приложения, а не просто «одно или два выбранных приложения на конкретном устройстве».
Потому что команде пришлось «сосредоточить [свои] ограниченные ресурсы», особенно из-за возникших проблем. Из-за COVID-19 команда решила отложить прокрутку скриншотов до будущей версии Android.
Новое требование CDD для информирования пользователей о фоновых ограничениях
Ни для кого не секрет, что многие OEM-производители Android, особенно китайские, жестко ограничивают работу приложений в фоновом режиме. Некоторые разработчики были настолько разочарованы тем, что их приложения закрывались в фоновом режиме, что объединились, чтобы создать веб-сайт под названием «Не убивайте мое приложение", чтобы ранжировать OEM-производителей на основе того, насколько плохо они обрабатывают фоновые процессы приложений. Те самые разработчики даже недавно сделал эталон чтобы пользователи могли проверить, насколько агрессивно их устройство уничтожает приложения в фоновом режиме. Причина, по которой многие OEM-производители любят убивать фоновые процессы приложений, сложна, но я думаю, что лучше всего она объяснена в этом комментарии Redditor /u/возможно сомнительный. В комментарии описывается сложный статус разработки приложений для Android в Китае, а также то, как китайские технологические компании участвуют в дальнейшем усложнении ситуации, и как отсутствие сервисов Google способствует продолжающемуся беспорядок.
Тем не менее, многие разработчики приложений по понятным причинам разочарованы этими изменениями в поведении платформы Android, что привело к тому, что разработчики оставили комментарий. спросить у Google, что они с этим делают в начало Reddit AMA. Вот ответ Google:
Из этого ответа можно сделать несколько выводов. Во-первых, Google хочет, чтобы OEM-производители были более прозрачными для пользователей в отношении ограничений фоновых приложений, которые они применяют. Я проверил (неизданный) документ определения совместимости Android 11 (CDD) и обнаружил следующее предлагаемое дополнение к разделу 3.5 — «Поведенческая совместимость API»:
Если реализации устройств реализуют собственный механизм ограничения приложений, и этот механизм является более строгим, чем «Редкий» резервный сегмент в AOSP, они:
[C-1-5] ДОЛЖНЫ информировать пользователей, если к приложению автоматически применяются ограничения. (НОВОЕ) Такая информация НЕ ДОЛЖНА предоставляться ранее, чем за 24 часа до применения таких ограничений.
(Примечание) Принудительная остановка считается более строгой, чем «Редкая», и ДОЛЖНА соответствовать всем требованиям 3.5.1, включая новый 3.5.1/C-1-5.
По сути, Google мало что может помешать OEM-производителям реализовать свои собственные ограничительные функции уничтожения приложений. Они требуют только, чтобы OEM-производители информировали пользователей, если ограничения их приложений применяются автоматически. OEM-производитель может показать диалоговое окно о том, что он собирается остановить запуск фоновых приложений, разряжающих батарею. фоновом режиме, и пользователь может дать согласие, не осознавая, что приложения, которые он действительно хочет запускать в фоновом режиме, также затронутый! Google возлагает на разработчиков ответственность за реагирование в случаях, когда их приложение неожиданно завершается в фоновом режиме. Действительно, комментарий Reddit продолжает подчеркивать новую «причины завершения процесса приложения«API, который может сообщить разработчикам, было ли их приложение закрыто пользователем, ОС или оно просто сломалось.
С другой стороны, Google, наконец, решает проблему несправедливой практики OEM-производителей, позволяющей определенным привилегированным приложениям обходить ограничения фоновых приложений. Этот средний пост от разработчика Тимоти Асимве подробно рассказывает о таких приложениях, как WhatsApp, Facebook и других приложениях, которые автоматически освобождаются от жестких фоновых ограничений некоторых OEM-программ. Google заявляет, что они «требуют, чтобы производители устройств не создавали списки разрешенных для наиболее популярных приложений». Мы не знаем, как это будет реализовано, но приятно осознавать, что OEM-производители наконец-то будут вынуждены относиться к сторонним разработчикам на равных — независимо от того, насколько велики или малы их приложения являются.
Наконец, Google также упоминает, что в Android 11 «добавлены дополнительные меры для предотвращения оскорбительного поведения из-за некорректного поведения приложений», что делает менее привлекательным для OEM-производителей агрессивное уничтожение фоновых процессов. Однако в компании не уточнили, в чем заключаются эти «дополнительные меры».
Улучшенное резервное копирование между устройствами
В прошлом месяце мы заметили изменение в документации Android 11, которое намекнули на поддержку лучшего резервного копирования локальных данных. В Android 11 система будет игнорировать атрибут манифестаallowBackup для любого приложения, предназначенного для уровня API 30, когда пользователь инициирует миграцию файлов приложения с устройства на устройство. Сотрудник Google Элиот Сток говорит, что эта функция предназначена для того, чтобы «производителям телефонов было намного проще создавать инструменты миграции между устройствами», такие как «отличный продукт Smart Switch от Samsung», для помочь «обеспечить более надежную передачу приложений между устройствами с точки зрения пользователя». К сожалению, это не относится к облачным резервным копиям, поскольку Google хочет «дать разработчикам программного обеспечения контроль над тем, что именно». происходит с данными их приложений». Таким образом, Android 11 по-прежнему будет учитывать атрибутallowBackup для любого облачного резервного копирования и восстановления, например, через встроенный Google Диск службы Google Play. резервное копирование. Наконец, Google признает, что лимит резервного копирования в 25 МБ на приложение может оказаться недостаточным для некоторых разработчиков, поэтому они ищут способы решить эту проблему. Однако локальное резервное копирование на ПК не рассматривается, и Google подтверждает свой план поэтапный отказ от резервного копирования adb в будущей версии Android.
Разработчикам рекомендуется внедрять простые методы миграции данных. новая библиотека Block Store, который является частью библиотеки служб идентификации Google, предназначен для упрощения входа в восстановленные приложения. из облака на новых устройствах, но разработчики сами решают, хотят ли они это реализовать библиотека.
Ускоренный запуск приложений благодаря процессу упреждающего чтения ввода-вывода (IORap)
Google постоянно экспериментирует со способами повышения производительности Android. Одна из малоизвестных функций, добавленных в Android 10, называется Unspecialized App Process Pool (USAP). Эта функция исключает разветвление Zygote во время процесса запуска приложения, экономя примерно ~5 мс на средней скорости запуска приложения на устройстве Pixel 2. В настоящее время эта функция отключено по умолчанию в AOSP, и Google объясняет, что использование дополнительной памяти все еще требует тестирования. Однако что еще интереснее, так это новая функция, появившаяся в Android 11, под названием I/O Read Ahead Process (процесс опережающего чтения ввода-вывода).ИОРап). По данным Google, эта функция приведет к «более чем на 5% более быстрому холодному запуску, а случаи-герои — на 20% быстрее». Эта особенность «будет предварительно выбирать артефакты приложений (например, код и ресурсы) во время процесса запуска», чтобы ускорить запуск приложения. скорости.
Google также «внес улучшения в профили, используемые для оптимизации пути к загрузочному классу и образа системы». что улучшит производительность приложения и снизит затраты на память и хранилище, связанные с системой. артефакты. Эти изменения в основном пойдут на пользу устройствам с большим объемом оперативной памяти, хотя Google не сказал, каков предел, при котором мы увидим наибольшую выгоду.
Изменения в ограниченном хранилище Android 11. Почему доступ к /Загрузки ограничен?
Приложения, предназначенные для Android 11 и использующие намерение ACTION_OPEN_DOCUMENT_TREE для запроса доступа к определенным каталогам на внешнем устройстве. хранилище больше не сможет запрашивать у пользователей доступ к корневому каталогу внешнего хранилища (/data/media/{user}), каталог (/data/media{user}/Download) или любой из каталогов данных приложения на внешнем хранилище (/Android/data или /Android/obb). Почему доступ к каталогу загрузок ограничен? По данным Google Роксанна Алиабади, это потому, что папка загрузки «наиболее подвержена риску наличия конфиденциальной информации». Например, пользователи, которые загружают свои налоговые возвраты или банковские выписки не должны беспокоиться о возможности злоупотребления приложениями своим постоянным доступом для чтения к каталог. Google сообщает, что в средстве выбора документов будет «обновлен текст... чтобы указать, что Android ограничил доступ к определенным папкам». Мы надеемся, что это уменьшит путаницу в отношении того, почему они не могут предоставить приложениям доступ к определенным каталогам. больше.
Для получения дополнительной информации о предстоящих изменениях в политике Scoped Storage and Play см. обратитесь к этой статье.
Разные темы
-
Позиция Google в отношении рутирования/моддинга
- Джефф Бэйли из команды AOSP Google подтверждает позицию компании в отношении поддержки выбора. Google «продолжит обеспечивать возможность моддинга/рутирования устройств линейки Pixel», но также «поддержит выбор OEM-производителей не разрешать использование своих устройств Кроме того, Google предоставляет разработчикам программного обеспечения возможность «не разрешать запуск своего программного обеспечения на устройствах с root-доступом», ссылаясь на недавние изменения в обнаружение несанкционированного доступа к программному обеспечению SafetyNet Attestation API.
-
Что случилось с «открыть и установить по умолчанию»?
- Андроид 10 создан немного раздражает установка приложения в качестве обработчика по умолчанию для конкретных ссылок, что, по словам Google, было сделано для защиты пользователей от «эксплуататорских приложений». Google отступил об этом изменении после его переосмысления и внесения «ряда скрытых изменений» для защиты пользователя.
-
Использование Vulkan Graphics API для рендеринга пользовательского интерфейса?
- Google в конечном итоге планирует использовать API Vulkan Graphics для рендеринга пользовательского интерфейса., что приведет к некоторому повышению производительности. Это все еще оценивается, но компания не поделилась какой-либо конкретикой.
-
На многих устройствах отсутствует служба CallScreeningService.
- Приложения Android могут реализовать API CallScreeningService перехватывать новые входящие и исходящие вызовы, позволяя им идентифицировать звонящего и принять или отклонить вызов. Хотя это официально документированный API, по словам разработчика /u/, очевидно, что многие OEM-производители не реализуют его должным образом._зеромод_. Google подтверждает что этот API проверен набором тестов совместимости (CTS), автоматизированным набором тестов, который должны пройти все устройства, чтобы считаться совместимыми с Android. По какой-то причине этот API возвращает значение null при вызове на устройствах OEM-производителей, таких как Huawei, Vivo, Xiaomi или Samsung, поэтому вполне вероятно, что у этих OEM-производителей есть ошибка в их программном обеспечении.
-
Никаких планов по созданию аудиоплагинов нет.
- Разработчик спросил Google, планируют ли они реализовать платформу аудиоплагинов, подобную Apple Audio Units, но ответ заключается в том, что это вряд ли произойдет в ближайшем будущем.
Вы можете прочитать все ответы команды разработчиков Android. здесь. В нескольких комментариях команда немного рассказывает о Java, Kotlin, системе сборки Android, API CameraX и других темах. Есть также несколько комментариев по поводу Wear OS, Android TV и Android Auto, но Google в основном повторяет свои существующие работы на этих платформах и советует разработчикам следить за обновлениями для получения дополнительной информации во время "Android за пределами телефонов"Неделя, начинающаяся 10 августа.