Khoảng 98% các cập nhật của ứng dụng trên Play Store là có các thay đổi trong tệp APK được tải về rồi thêm vào các tệp hiện tại, làm giảm kích cỡ của các cập nhật. Google Play đã dùng thuật toán delta từ năm 2012 và gần đây có thêm một thuật toán delta, bsdiff (tác giả Colin Percival1), mà chúng tôi đã kiểm tra có thể giảm kích cỡ cập nhật của một số tệp ẠPK lên tới 50% hoặc hơn so sánh với thuật toán cũ. Bsdiff được sinh ra nhằm tạo các thay đổi hiệu quả cho các thư viện có sẵn bằng cách lợi dụng cách mà các thư viện biên soạn các thay đổi code giữa các version. Để đạt hiệu quả cao nhất các thư viện nên được lưu dưới dạng không nén (nén làm ảnh hưởng tới thuật toán delta).
Một ví dụ của Chrome:
Mô tả bản cập nhật | Bản cập nhật trước | Kích cỡ Bsdiff |
---|---|---|
M46 tới M47 cập nhật lớn | 22.8 MB | 12.9 MB |
M47 cập nhật nhỏ | 15.3 MB | 3.6 MB |
Ứng dụng mà không có các thư viện giải nén có thể giảm được trung bình 5% về kích cỡ, so với các thuật toán delta cũ.
Ngoài việc cải thiện để giảm dung lượng tải về, chúng ta cũng có thể hiện thị thông tin về dung lượng tải về của ứng dụng trong Play Store rõ ràng hơn. Bạn có thể thấy dung lượng thực của tệp tải cề chứ không phải là tệp APK trên Play Store. Nếu bạn đã cài ứng dụng rồi thì sẽ chỉ nhìn thấy kích cỡ của bản cập nhật. Các thay đổi này đang được tung ra.
Tối ưu phương pháp tính toán kích cỡ: Người dùng quan tâm đến dung lượng tệp tải về (ví dụ bao nhiêu bytes được tải về khi cài hoặc cập nhật ứng dụng), và họ quan tâm đến dung lượng ổ trên điện thoại (ứng dụng chiếm bao nhiêu bộ nhớ). Nên nhớ là hai con số này không giống với con số của tệp APK, chúng không liên quan tới nhau.
Ví dụ của Chrome:
/ | Nén thư viện | Không nén thư viện |
---|---|---|
Kích cỡ APK | 39MB | 52MB (+25%) |
Kích cỡ tải về (cài đặt) | 29MB | 29MB (no change) |
Kích cỡ tải về (cập nhật) | 29MB | 21MB (-29%) |
Chiếm dung lượng ổ | 71MB | 52MB (-26%) |
Giảm kích cỡ tệp APK: Bỏ các dữ liệu không cần thiết khỏi APK như là các resources không dùng tới, code chết.
Tối ưu từng phần của APK khiến nó nhỏ hơn: Dùng các đinh dạng tệp hiệu quả hơn ví dụ như dùng WebP thay vì JPEG, hoặc dùng Proguard để bỏ các dòng code không dùng tới.
Tác giả: Anthony Morris, SWE Google Play
Người dịch: Đoàn Dự