Ghi chép thực tế ⑥: Hồi sinh ứng dụng Android đã ngừng hoạt động bằng AI

Tình huống triển khai AI

“Ứng dụng vẫn chạy. Chỉ có thông báo là nhiều năm rồi không đến.” Yêu cầu bắt đầu như vậy. Đó là một ứng dụng Android cho dịch vụ B2C theo hình thức hội viên. Nó vẫn có trên cửa hàng, vẫn khởi động được, nhưng riêng thông báo đẩy thì từ lúc nào đó đã không gửi đi được lấy một lần. Lần này, chúng tôi lấy một “ứng dụng di động không thể động vào” — không còn người tạo ra nó, cũng không còn tài liệu — và giữ nguyên toàn bộ tài sản hội viên cùng khóa ký, dựng lại bằng AI. Đây là bản ghi chép đó.

Di sản đáng sợ nhất không phải là ứng dụng bị sập.
Mà là ứng dụng không hề sập, chỉ có chức năng quan trọng lặng lẽ ngừng chạy.

Bên dưới câu “nó vẫn chạy mà”, thông báo đã chết từ mấy năm trước.

Bản chất của ứng dụng này là một lớp vỏ native hiển thị dịch vụ web sẵn có — một lớp bọc WebView cộng với thông báo đẩy. Màn hình dùng lại tài sản web sẵn có nên vẫn sống. Vấn đề nằm ở thông báo: cơ chế gửi phụ thuộc vào nền tảng phân phối thế hệ cũ, và ngay khi nền tảng đó ngừng cung cấp thì bản thân tuyến đường cũng biến mất. Trong cơ sở dữ liệu chỉ có thêm một cột để lưu token theo phương thức mới, nhưng chưa bao giờ có gì được ghi vào đó — đường dây bị đứt giữa chừng và cứ để nguyên như thế.

khoảng 14.000thiết bị đã đăng ký (toàn bộ)
khoảng 3.200thiết bị Android
năm 2016năm cấp khóa ký hiện có
1 lầnsố lần phát hành lại cần thiết

Tám phần mười của “không thể động vào” thật ra là nỗi sợ phải làm lại.

Bức tường thực sự vấp phải không nằm ở độ khó của mã nguồn mà ở nỗi sợ kế thừa. Với Android nói riêng, chỉ cần sai một bước là nó trở thành một ứng dụng khác mà người dùng hiện tại không thể cập nhật.

Nền tảng gửi thông báo đã biến mất cùng cả một thế hệĐường truyềnDịch vụ phân phối thế hệ cũ đã đóng cửa, phía gửi không còn tuyến đường nào. Trước hết phải chuyển sang “tuyến đường hiện đại” — mọi thứ bắt đầu từ đó.
Không còn người tạo ra, cũng không còn tài liệu thiết kếỨng dụngThứ còn lại chỉ là mã nguồn cũ. Tác nhân AI đọc hiểu cấu trúc, nắm được bộ khung “vỏ + WebView + thông báo” rồi mới thiết kế lại. Không phải làm từ con số không, mà hiểu hiện vật rồi dựng lại — đó là cách tiến hành.
Không kế thừa được khóa ký thì toàn bộ người dùng không thể cập nhậtỨng dụngTrên Android, chỉ bản được ký bằng đúng khóa ký đó mới đến được như một “bản cập nhật”. Chúng tôi tìm ra khóa cấp năm 2016, tức khoảng mười năm trước, kế thừa nó và xác nhận vân tay chứng chỉ trùng khớp hoàn toàn, bảo đảm phát hành dưới dạng cập nhật chứ không phải cài mới.
API đăng ký bắt buộc dùng kết nối mã hóaĐường truyềnMáy chủ cũ được cấu hình chặn kết nối không mã hóa, và phần lớn các ca đăng ký thiết bị thất bại đều nằm ở đây. Chúng tôi không vô hiệu hóa việc kiểm tra để đi vòng, mà thống nhất phía ứng dụng theo tiền đề kết nối mã hóa để giải quyết.
Môi trường build không theo kịp yêu cầu hiện hành của cửa hàngỨng dụngCửa hàng không chấp nhận môi trường chạy cũ. Chúng tôi nâng nền tảng build (công cụ build, ngôn ngữ, môi trường chạy) lên bản mới nhất, chỉnh trang lại đến mức có thể xuất ra gói phân phối đã ký.

Chúng tôi phân định rõ cái gì giữ lại, cái gì làm lại.

Việc phải làm không phải là “thay mới toàn bộ”. Tài sản còn dùng được thì giữ nguyên mà dùng. Tách ra thì sẽ như thế này.

Hạng mụcTrước đâySau khi dựng lại
Tuyến thông báonền tảng phân phối thế hệ cũ
(đã ngừng cung cấp – không gửi được)
Chuyển sang nền tảng phân phối hiện hành (FCM)
Lớp vỏ ứng dụngBản cài đặt native thế hệ cũTạo lại bằng bản cài đặt native mới nhất
Màn hình (nội dung)Hiển thị dịch vụ web sẵn cóGiữ nguyên (bảo toàn tài sản hội viên)
Khóa kýCấp năm 2016Kế thừa đúng khóa đó (phát hành như bản cập nhật)
Dữ liệu hội viên và thiết bịKhoảng 14.000 thiết bị đã đăng kýKế thừa nguyên vẹn

Bản thân việc dựng lại được tác nhân AI đẩy một mạch. Ứng dụng làm lại đã được chạy trên máy ảo qua trọn chuỗi lấy token thông báo → đăng ký với máy chủ → thông báo thực sự đến nơi, xác nhận vòng khứ hồi thành công. Đầu ra là gói đã ký, phân phối được ngay.

Thiết kế “việc dựng lại” và “việc phát hành lại” ở mức nhỏ nhất.Việc hồi sinh thông báo thực ra đã được chuẩn bị để chỉ cần chuyển đổi ở phía máy chủ là kích hoạt được. Ứng dụng chỉ phát hành lại một lần, sau đó có thể đưa thông báo trở lại vận hành mà không động đến thiết bị nào — “không bắt người dùng cập nhật đi cập nhật lại” càng có giá trị với dịch vụ có nhiều hội viên.

Phần lớn các ứng dụng bị coi là hỏng không phải là mất trắng. Chỉ cần nắm được vài đoạn dây đang đứt và những chiếc khóa phải kế thừa, bạn có thể đưa hiện vật trở lại nền tảng hiện đại mà vẫn giữ nguyên nó. Ở phần iOS (Ghi chép thực tế ⑦), chúng tôi sẽ viết về nền tảng còn lại — nơi có đa số hội viên — và câu chuyện chung cho cả hai hệ điều hành: hiện đại hóa thông báo mà vẫn giữ nguyên máy chủ cũ.

* Bài viết dựa trên một dự án có thật, được khái quát hóa trong phạm vi không thể nhận diện doanh nghiệp hay dịch vụ. Các con số là số xấp xỉ theo đo đạc tại thời điểm tháng 8 năm 2026. Thời gian và khối lượng công việc thay đổi tùy theo cấu trúc ứng dụng.

Thẻ:

🌐 Tiếng Việt