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


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

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

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

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

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

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

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

В отчете 9to5Google по этому поводу также говорится, что проблема ограничена устройствами под управлением Android 10 или более ранней версии и не влияет на устройства, на которых работает Android 11 Developer Preview. Это связано с тем, что в 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, которые при подключении к приведенному выше уравнению выглядят так:

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

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

b: 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 фиксацию, которая объединяет исправление для этой ошибки обоев.


0 Comments

Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format