[Обновление 2: исправлено] Эти обои вызывают редкую ошибку, приводящую к перезагрузке устройств Android.

click fraud protection

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

Обновление 2 (03.08.2020, 15:03 по восточному времени): В исправлениях безопасности Android от августа 2020 года компания Google обновила Android, исправив эту ошибку. Более подробную информацию можно найти внизу.

Обновление 1 (04.06.2020, 03:12 по восточному времени): Появились новые объяснения того, почему «проклятые обои» вызывают сбой в работе телефонов, а также ответ Google. Прокрутите вниз для получения дополнительной информации. Статья в редакции, опубликованной 1 июня 2020 года, сохранена ниже.

Представьте, что вы ищете в Интернете крутые обои и вы попадаете в живописный пейзаж. Здесь есть все; пышный зеленый лес, нетронутое озеро с крошечным островом, заснеженные горы на заднем плане и густая облачность, сквозь щели которой просачивается солнечный свет. Вы сразу же загружаете изображение, устанавливаете его в качестве обоев на телефон и — бац! Ваш телефон Android зависает в загрузочном цикле. Звучит маловероятно, не так ли? Ну, это верно для этих конкретных обоев.

Обои недавно были опубликованы на Твиттеризвестными Samsung источник информации Ice Universe, который заявил, что обои «приведут к сбою вашего телефона!» Несмотря на предупреждение, несколько пользователи загрузили обои, чтобы проверить, действительно ли они что-то сделали на их телефоне, и столкнулись со следующим Результаты:

По словам Давиде Бьянко, ведущего разработчика основанного на AOSP пользовательское ПЗУ «POSP», именно эти обои вызывают сбой на некоторых устройствах Android, поскольку они используют цветовое пространство RGB вместо цветового пространства sRGB, которое изначально поддерживается в Android. У Бьянко есть отправил патч на AOSP, который, как сообщается, устраняет проблему, а в описании патча говорится: «Проблема возникает, когда пользователь пытается установить в качестве обоев изображение, отличное от sRGB. Происходит следующее: значение переменной y превышает границы гистограммы, что приводит к сбою SysUI. Одним из возможных решений является ограничение значения y всегда меньшим 256». Вместе с Bianco два разработчика, старший член XDA BadDaemon и признанный разработчик XDA luca020400Команда популярной команды кастомных прошивок LineageOS также предложила уникальное решение проблемы. Вы можете ознакомиться с описаниями патчей на LineageOS Gerrit, выполнив следующие действия: эта ссылка и эта ссылка.

Мы настоятельно не рекомендуем ни при каких обстоятельствах использовать это изображение в качестве обоев. Если вы уже использовали его и ваше устройство зависло в загрузочном цикле, ознакомьтесь с приведенными ниже инструкциями о том, как можно восстановить свое устройство.

А отчет из 9to5Google по этому вопросу далее показывает, что проблема ограничена устройствами под управлением Android 10 или старше и не затрагивает устройства под управлением Андроид 11 Предварительный просмотр для разработчиков. Это связано с тем, что на Android 11 система преобразует цветовое пространство, если оно не поддерживается, а на Android 10 — нет. Это означает, что это не проблема с этим конкретным изображением и может быть вызвана другими изображениями, использующими цветовое пространство RGB.

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


Обновление 1: новое объяснение, ответ Google

Подробно о причинах ошибки, как объяснил старший участник XDA. BadDaemon и признанный разработчик XDA luca020400, «проклятые» обои кодируются в специальном цветовом пространстве, которое называется «Google/Skia/E3CADAB7BD3DE5E3436874D2A9DEE126» (это полное название цветового пространства, а Skia относится к Библиотека 2D-графики от Google.) Напротив, большинство других изображений обоев закодированы в цветовом пространстве, называемом «sRGB».

В Android версии 10 и старше все изображения конвертируются в sRGB, если иное не указано разработчиками. При преобразовании изображения в sRGB может возникнуть редкая ошибка, из-за которой код, вычисляющий значение «яркости» каждого пикселя, может превысить максимальный предел в 255.

Яркость рассчитывается по следующей формуле:

Яркость = .2126f * r + .7152f * g + .0722f * b

Здесь «r», «g» и «b» — значения красного, зеленого и синего цветов, представленные в 8-битном значении от 0 до 255.

Проблема этого расчета в том, что перед окончательным суммированием каждая часть всегда округляется в большую сторону. Один из пикселей в "проклятых" обоях, когда идет процесс конвертации изображения из sRGB и потом в оттенки серого имеет следующие значения RGB: 255, 255, 243, что при подключении к приведенному выше уравнению выглядит нравиться:

г: .2126 * 255 = 54,213 => 55

г: 0,7152 * 255 = 182,376 => 183

б: 0,0722 * 255 = 18,411 => 19

Яркость = r+g + b = 257

Это значение приводит к сбою SystemUI и, по сути, всей ОС, поскольку оно превышает максимальное значение. Это невероятно специфичная ошибка, поскольку она включает в себя комбинацию ошибки округления и ошибки преобразования цветового пространства.

Эта ошибка не затрагивает Android 11, поскольку цветовое пространство изображения «Skia» по умолчанию не преобразуется в sRGB. Таким образом, эта ошибка преобразования цветового пространства и ошибка округления не возникает в Android 11.

Однако Ромен Гай из команды Android Toolkit в Google считает, что основная причина этой проблемы Речь идет только о способе расчета яркости, а не о каких-либо проблемах преобразования цветового пространства. Google проводит собственное внутреннее тестирование. так что мы, вероятно, скоро увидим, что они придумают.

Это объяснение было обновлено, чтобы уточнить, что один из пикселей на «проклятых» обоях является причиной этой конкретной ошибки вычисления округления яркости. Мы также уточнили, что округление происходит на каждом этапе расчета яркости, а не в конце.


Обновление 2: исправлено в патчах за август 2020 г.

Исправления безопасности Android за август только что вышел в эфири признанный разработчик XDA luca020400 заметил зафиксировать в AOSP это объединяет исправление этой ошибки с обоями.