:quality(75)/2020_6_4_637269056780728031_vi-dau-ma-mot-hinh-nen-co-the-khien-smartphone-android-bi-crash-fptshop-cover.jpg)
Vì đâu mà một hình nền có thể khiến smartphone Android bị crash?
Đây là câu hỏi khá nóng trong ít ngày qua, khi tin tức về một hình nền “bị nguyền rủa” được lan truyền trên mạng.
Giải thích vấn đề
Tóm tắt nhanh: Thiết lập một hình ảnh cụ thể dưới đây làm hình nền có thể khiến smartphone rơi vào một vòng lặp sự cố và khiến chúng không thể sử dụng được nữa.
Có một vài giải pháp để khắc phục tùy thuộc vào mức độ khó của điện thoại. Một số người dùng đã có thể thay đổi hình nền trong khoảng thời gian ngắn giữa các sự cố. Những người khác đã xóa thành công hình nền bằng công cụ recovery TWRP. Nhưng trong hầu hết các trường hợp, giải pháp duy nhất là đặt lại điện thoại về cài đặt gốc, việc này sẽ khiến người dùng mất toàn bộ dữ liệu mà không hề được sao lưu.
Vấn đề được đưa ra ánh sáng bởi Ice Universe - người dùng Twitter Trung Quốc được biết đến với nhiều rò rỉ chính xác. Dựa trên báo cáo của người dùng thì nhiều mẫu máy của Samsung và Google bị ảnh hưởng, một số thiết bị của OnePlus, Nokia và Xiaomi cũng bị ảnh hưởng (không rõ liệu các thiết bị này có chạy phần mềm gốc hay ROM tùy chỉnh). Từ thử nghiệm của AndroidAuthority và xem xét các báo cáo của người dùng, các thiết bị Huawei dường như ít gặp phải vấn đề liên quan đến sự cố hình nền kể trên.
Vấn đề này ảnh hưởng đến các smartphone đã cập nhật Android 10, nhưng hóa ra nó không thực sự mới. Người dùng đã báo cáo các vấn đề tương tự trong một vài năm và chỉ ít tháng trước Android Police đã báo cáo về những gì đang xảy ra liên quan chặt chẽ và đặc biệt ảnh hưởng đến điện thoại Pixel chạy ứng dụng Google Wallpapers.
Vậy chuyện gì đang xảy ra?
AndroidAuthority đã tìm thấy một vài lời giải thích cho vấn đề này, hầu hết chúng liên quan đến không gian màu của hình ảnh, vượt xa những gì mà Hệ thống SystemUI trên Android có thể xử lý dẫn đến xảy ra sự cố.
Để hiểu rõ hơn về những gì mà xảy ra với vụ việc liên quan đến hình nền Android này, AndroidAuthority đã liên hệ với Davide Bianco - một trong những nhà phát triển chính của dự án ROM tùy chỉnh POSP, cũng chính là người đã gửi bản vá ban đầu cho vấn đề này cho trình theo dõi lỗi AOSP.
Davide đã giải thích một cách chi tiết về cách một hình ảnh có thể gây ra những vấn đề như vậy. Dưới đây là lời giải thích được đưa ra:
“Vấn đề chính ở đây là SystemUI chỉ xử lý hình ảnh sRGB cho hình nền và không có bất kỳ kiểm tra nào đối với hình nền không phải sRGB. Điều này có thể dẫn đến một sự cố cụ thể trong class ImageProcessHelper, vì một biến được sử dụng để truy cập một mảng nhưng lại đi qua giới hạn mảng.
Để tham khảo, đây là định nghĩa cụ thể.
Biến này được gọi là y và nó cộng với các giá trị rgb pixel đã được quét ở thời điểm hiện tại. Pixel này thu được từ việc quét mọi hàng và cột của bề mặt hình ảnh thang độ xám. Mỗi khi nhận được một pixel, hệ thống gán cho y tổng giá trị rgb của nó (tối đa thường là 255) và sử dụng biến đã nói để truy cập vào một phần tử của mảng biểu đồ - histogram (có kích thước tối đa là 256) và thực hiện công cụ với phần tử đã nói.
Bây giờ, đối với các hình ảnh thang độ xám bình thường, tổng giá trị rgb luôn là 255, nhưng đây không phải là hình ảnh bình thường. Biến y vượt quá 255 và nó tạo ra ngoại lệ giới hạn (bất kỳ ngoại lệ nào trong SysUI đều được coi là nghiêm trọng, dẫn đến một vòng lặp crash vô hạn bởi các sự cố vì hình ảnh được xử lý mỗi khi SysUI bắt đầu). Bây giờ, một giải pháp có thể được sử dụng là thêm một bài kiểm tra sau khi y được gán một giá trị về cơ bản đặt y thành 255 nếu nó vượt quá giới hạn tối đa. Điều này thực sự hoạt động, nhưng chúng ta nhận được chất lượng kém hơn vì một số lý do.
Các anh chàng LineageOS đã có thể phát hiện ra rằng vấn đề đặc biệt này xảy ra do làm tròn kém, chủ yếu là do các giá trị rgb luôn được làm tròn đến ceil thay vì làm tròn thông thường. Họ đã có thể khắc phục bằng cách làm tròn các giá trị theo cách thủ công và rõ ràng phương pháp này cũng giữ được chất lượng, nhưng tôi thực sự không hiểu, chủ yếu là vì SysUI dường như luôn chuyển đổi hình ảnh thành sRGB, dẫn đến mất màu khi không gian màu lớn hơn.

Nó cũng được phát hiện bởi một nhà phát triển của 9to5Google là Dylan Roussel. Nhà phát triển Android và cộng tác viên 9to5Google cho biết rằng vấn đề không xảy ra trên Android 11 vì hình ảnh luôn được chuyển đổi thành sRGB trước khi nó được xử lý theo bất kỳ cách nào.
Tôi cũng đã thử tự tạo hình ảnh bị hỏng của mình bằng photoshop hoặc gimp, nhưng SysUI luôn chuyển đổi hình ảnh sang không gian màu an toàn, dẫn đến việc không bị crash. Tôi thậm chí đã thử trích xuất hồ sơ màu hình ảnh trên và sử dụng nó trong một hình ảnh mới, nhưng vẫn không thể khiến SysUI gặp sự cố.
Có tin tốt và cũng có tin xấu
Tin xấu là vấn đề hiện đang được công khai, và một số người có thể dùng bức ảnh trên để đi lừa người khác. Tồi tệ hơn, lỗi này dường như là một vấn đề lớn trong một vài năm trở lại đây và chưa có hành động rõ ràng nào từ Google.
Một tin xấu khác là nếu bạn trở thành nạn nhân của một trò chơi khăm (hoặc chính sự tò mò của bạn), thì không có phương pháp nào là dễ dàng để hoàn tác nó. Ít nhất thì khôi phục cài đặt gốc vẫn là giải pháp cuối cùng, nhưng chúng tôi vẫn khuyên bạn không nên thử nó trên thiết bị của riêng bạn.
Tin tốt là đây dường như là một lỗi đơn giản, thay vì phần mềm độc hại hoặc bất cứ thứ gì bất chính hơn.
Cũng có tin tốt: lỗi này sẽ không thành vấn đề khi Android 11 cập bến vào cuối năm nay.
Theo: AndroidAuthority
:quality(75)/estore-v2/img/fptshop-logo.png)
:quality(75)/2020_6_4_637268887026031029_nhin-lai-lich-su-android-loat-thiet-bi-co-tam-anh-huong-quan-trong-nhat-9.jpg)