(+84) 463.28.7979

Tại sao các nhà sản xuất mất rất nhiều tháng để cập nhật phiên bản Android mới?


Khi nghe tin có bản cập nhật Android mới từ Google (ví dụ gần đây là ICS 4.0 và Jelly Bean 4.1), người sử dụng sẽ đón nhận với thái độ tích cực, háo hức mong chờ máy mình sẽ mau chóng được lên phiên bản mới. Tuy nhiên, đối với các nhà sản xuất thiết bị (từ đây sẽ gọi tắt là OEMs), mọi việc không hề đơn giản. Hoàn toàn không có chuyện lấy toàn bộ bộ mã nguồn mới đó vào chiều hôm nay (ví dụ là 1/7 đi), và sáng hôm sau 2/7 đã cho ra lò bản cập nhật đến tay người dùng cuối được. Sẽ có một khối lượng công việc lớn, bao gồm lập trình, kiểm tra và chứng nhận bản cập nhật đó đối với 1 thiết bị cụ thể. Sony Ericsson (nay là Sony) và Motorola Mobility đã cung cấp một số chi tiết của quá trình này, cho chúng ta một cái nhìn cách thức mà các bản cập nhật Android đi từ Google, qua OEMs, đến nhà mạng và cuối cùng đến người dùng cuối như thế nào.

  • Nhận được mã nguồn

Quá trình bắt đầu khi Google công bố bộ mã nguồn mới (của một phiên bản Android, ví dụ GB 2.3) tại diễn đàn Dự án Mã nguồn mở Android (AOSP). Sự kiện này thường xảy ra cùng lúc mà Google công bố một thiết bị Nexus mới. OEMs lấy bộ mã nguồn đó về, cùng với các bộ mã của họ và bắt tay vào công việc. Chỉ có duy nhất một ngoại lệ là OEMs sản xuất các thiết bị Nexus sẽ nhận được bộ mã nguồn sớm hơn, và được Google hỗ trợ chặt chẽ, trong những năm qua đó là HTC (G1, Nexus One), Samsung (Nexus S, Galaxy Nexus) và mới đây là Asus với Nexus 7.

Các thiết bị được mang tên Nexus là những máy chạy Android theo chuẩn mực của Google, khi phát hành nó luôn luôn chạy phiên bản Android mới nhất, và sẽ được hỗ trợ cập nhật sớm nhất.

Android-push
Ảnh minh họa: Sony

Việc đầu tiên mà hai bên cùng làm là tối ưu lớp phần mềm HAL (Hardware Abstraction Layer). HAL là một lớp phần mềm mà Android sẽ cho phép ứng dụng truy cập trực tiếp đến phần cứng thiết bị. Trong trường hợp Android 4.0 Ice Cream Sandwich, Google sử dụng chip TI OMAP như là khuôn mẫu cho OS hoạt động nên các OEMs sử dụng chip khác phải thay thế lớp phần mềm HAL này.

Ví dụ, Sony dùng chip Snapdragon của Qualcomm cho điện thoại của mình, do đó cần một lớp HAL mới. Tuy nhiên điều may mắn là tuy các OEMs sử dụng các SOC (system on chip) khác nhau, nhưng đa phần chúng đều dựa trên cùng một nền tảng kiến trúc giống nhau (ví dụ của ARM), do đó nó giúp các OEMs tiết kiệm được một khoảng thời gian tùy biến bản Android đó cho nhiều máy khác nhau.

Motorola thì sử dụng cả chip SoC Tegra của Nvidia và TI OMAP, do đó lại càng rắc rối hơn nữa. Các thiết bị dùng chip OMAP mới như Droid Razr hay Bionic có thể được ưu ái cập nhật sớm hơn vì dễ dàng biên dịch HAL hơn. Và trên thực tế, trong các thiết bị của Motorola chỉ mới có các máy dùng chip OMAP mới được nâng cấp lên ICS (bản chính thức, không tính các Rom Cook), các thiết bị cũ hơn sẽ phải chờ đợi một thời gian nữa, không biết là bao lâu.
Ngoài ra các OEMs còn gặp phải sự khác biệt giữa các module như âm thanh, Wifi, bluetooth… trong các thiết bị khác nhau. Lớp HAL sẽ cần phải được tùy chỉnh để tất cả các module này hoạt động hoàn hảo.

[IMG]
Ảnh minh họa: Sony
  • Quá trình hiệu chỉnh và kiểm tra

Bước tiếp theo trở ngại hơn: các OEMs sẽ phải thay đổi bản cập nhật Android để phù hợp với các yêu cầu của nhà mạng và các đối tác khác, bao gồm các bản vá, giao diện người dùng (ví dụ Sony có TimeScape, HTC có Sense hay Motorola có MotoBlur…) và rất nhiều thay đổi khác nữa.

Tất cả các OEMs đều phải thực hiện quá trình kiểm tra kỹ lưỡng trước khi công bố, trong đó một yếu tố quan trọng cần được kiểm tra chính là thời lượng pin. Một khi các tùy chỉnh được đưa vào mà gây giảm thời gian dùng pin, nó sẽ bị loại bỏ. Đồng thời cũng phải kiểm tra khả năng bắt sóng với các nhà mạng, ví dụ bản baseband này có thể bắt sóng nhà mạng này tốt nhưng yếu sóng với mạng kia.

Sau khi đã được kiểm tra kỹ lưỡng, bản cập nhật phải được chứng nhận bởi các tổ chức tiêu chuẩn và quy chuẩn. Thiết bị phải được chứng nhận đạt các tiêu chuẩn và quy chuẩn ở từng quốc gia và vũng lãnh thổ khác nhau. Mỗi khi bản cập nhật thay đổi cách thức hoạt động của chip mạng, ví dụ module bluetooth trong Android 4.0, thành phần đó cần phải được chứng nhận và hiệu chỉnh lại, càng làm gia tăng thời gian chờ đợi.

  • Cung cấp

Cách thức cung cấp các bản cập nhật khác nhau tùy theo từng OEMs và nhà mạng khác nhau. Motorola thường sử dụng một nhóm nhỏ các tester để kiểm tra lỗi, sau đó cung cấp cho khoảng vài ngàn người sử dụng thông thường dưới dạng beta. Thuật ngữ gọi là “soak test”. Các OEMs thường kiểm tra trên vài chục thiết bị, và không thể kiểm tra hết tất cả các lỗi tiềm tàng. Có nhiều bản update đã phải hủy bỏ sau nhiều đợt “soak test”, bởi có một thực tế là với 2 điện thoại giống hệt nhau, nhưng bản cập nhật này chạy tốt với máy này nhưng lại bị lỗi trên máy kia. Sau đó, OEMs lại phải rà soát lại và chọn ra bản chạy ổn định trên nhiều máy nhất. Cuối cùng, nếu tất cả đều thuận lợi, bản cập nhật được chính thức tung ra và người dùng hoan hỉ đón nhận. Nhưng chưa đâu, người dùng còn phải chờ đợi nữa bởi cách biệt về địa lý, giống như đợt nâng cấp ICS 4.0 cho các điện thoại xPERIA 2011 của Sony vừa rồi, nơi này có trước nơi kia cả tháng trời.

Trên đây chỉ là cái nhìn sơ bộ về các bước chính mà các OEMs tiến hành trước khi cung cấp các bản cập nhật Android mới. Tất cả quá trình trên thực tế phức tạp hơn bài viết này nhiều lần, và mỗi thiết bị có một quá trình hoàn toàn khác nhau. Do vậy ta hiểu được tại sao có những thiết bị được cung cấp bản cập nhật rất sớm (như các thiết bị Nexus), có những thiết bị đến vài tháng sau mới có, và có những thiết bị không bao giờ được cập nhật nữa. Và chúng ta cũng hiểu được tại sao Apple và Microsoft có thể cung cấp các bản cập nhật HĐH cho thiết bị của mình rất nhanh chóng khi họ loại bỏ được nhiều rắc rối nêu trên.

Bạn có thể tham gia thảo luận về chủ đề trên của Sony ở đây và Motorola ở đây.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>