[Обновление 2: исправлено] Эти обои вызывают редкую ошибку, приводящую к загрузке устройств Android.
Представьте, что вы рыскаете по Интернету в поисках классных обоев и наталкиваетесь на живописный пейзаж. В нем есть все; пышный зеленый лес, чистейшее озеро с крошечным островком, заснеженные горы на заднем плане и густой облачный покров с солнечным светом, проникающим сквозь щели. Вы сразу же загружаете изображение, устанавливаете его в качестве обоев своего телефона и бум! Ваш телефон Android зависает в загрузочном цикле. Кажется маловероятным, правда? Что ж, это правда для этих конкретных обоев.
ВНИМАНИЕ!
Никогда не устанавливайте это изображение в качестве обоев, особенно для пользователей мобильных телефонов Samsung!
Это вызовет сбой вашего телефона!
Не пытайтесь!
Если кто-то пришлет вам это изображение, не обращайте на него внимания. pic.twitter.com/rVbozJdhkL– Ледяная вселенная (@UniverseIce) 31 мая 2020 г.
Обоями недавно поделился в Твиттере известный исследователь Samsung Ice Universe, который утверждал, что обои «приведут к сбою вашего телефона!» Несмотря на предупреждение, несколько пользователей загрузили обои, чтобы проверить, действительно ли они что-то делают на их телефоне, и получили следующие результаты:
@UniverseIce Это проблема Android, к сожалению, затрагивает также пиксели Google pic.twitter.com/HZTtogLfwB
– Себастьян (@ seb3153) 31 мая 2020 г.
Это самая долбаная ошибка, которую я когда-либо видел. Я даже пробовал в безопасном режиме, но все равно не помогло. Пришлось сбросить данные приложения. Шицунг, сделай что-нибудь pic.twitter.com/ASeHfNNGYI
– Dawood (@pegasaie) 31 мая 2020 г.
Ха, протестировал это в эмуляторе. Вылетает SystemUI. Проверил на предмет каких-либо странных проблем с заголовком изображения, не заметил никаких отклонений от моего ограниченного знания JPEG. Это тоже нормально заканчивается. pic.twitter.com/s2m0q0WNqo
– Джейсон Эшли (@testsubjectname) 31 мая 2020 г.
По словам Дэвида Бьянко, ведущего разработчика пользовательского ПЗУ «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