Tối ưu hoá mã DEX

Tối ưu hoá mã DEX là một phát hiện của Android vitals giúp bạn theo dõi và cải thiện chất lượng, kích thước cũng như hiệu suất biên dịch của ứng dụng. Việc tối ưu hoá và làm rối mã nguồn bằng R8 hoặc các công cụ thay thế (chẳng hạn như trình tối ưu hoá tương thích với ProGuard hoặc trình xử lý hậu kỳ DEX thứ cấp) sẽ giảm kích thước DEX của ứng dụng, cải thiện hiệu suất thời gian chạy và giảm thiểu mức sử dụng bộ nhớ.

Tệp DEX (hay Dalvik Executable) chứa mã đã biên dịch dùng để chạy ứng dụng của bạn. Tệp này thường bao gồm mã Java và Kotlin, thay vì mã C++ đã biên dịch hoặc tệp .so.

Android vitals báo cáo các chỉ số tối ưu hoá mã DEX cho tất cả ứng dụng và trò chơi, nhưng chỉ áp dụng ngưỡng cho những ứng dụng và trò chơi đáp ứng các yêu cầu cụ thể về kích thước.

Phát hiện vấn đề

Android vitals có thể cảnh báo cho bạn khi mức tối ưu hoá mã DEX của ứng dụng thấp. Điều này bao gồm việc làm rối mã nguồn, rút gọn và tối ưu hoá cho các ứng dụng và trò chơi sử dụng R8. Đối với những ứng dụng không sử dụng R8, Android vitals sẽ cố gắng kiểm tra tốc độ tối ưu hoá, rút gọn và làm rối mã nguồn, nhưng sẽ quay lại phương pháp phỏng đoán làm rối mã nguồn làm proxy khi cần thiết.

Theo dõi trạng thái tối ưu hoá

Android vitals có thể giúp cải thiện hiệu suất của ứng dụng bằng cách thông báo cho bạn qua Play Console khi ứng dụng của bạn không đáp ứng tỷ lệ phần trăm tối thiểu được xác định cho việc tối ưu hoá mã. Để biết định nghĩa chi tiết về việc rút gọn, tối ưu hoá và làm rối mã nguồn, hãy xem phần Sử dụng Trình phân tích cấu hình R8.

Đối với các ứng dụng được tạo bằng bản vá mới nhất của AGP phiên bản 8.10 trở lên, các tỷ lệ phần trăm này được lấy từ tệp r8.json đi kèm.

Đối với các phiên bản AGP thấp hơn hoặc trường hợp không có tệp r8.json, các tỷ lệ phần trăm được tính từ tệp mapping.txt (nếu có) hoặc bằng cách sử dụng phương pháp phỏng đoán DEX nếu không có tệp ánh xạ.

Đối với những ứng dụng được tối ưu hoá bằng một trình tối ưu hoá mã thay thế, Android vitals sẽ phân tích để ước tính tỷ lệ phần trăm các lớp, phương thức và trường bị làm rối mã nguồn trong gói ứng dụng.

Tổng kích thước DEX tối thiểu

Mặc dù Android vitals tính toán các chỉ số tối ưu hoá mã cho tất cả ứng dụng, nhưng bạn sẽ chỉ nhận được cảnh báo nếu gói ứng dụng của bạn đáp ứng các yêu cầu sau về tổng kích thước DEX:

  • Ứng dụng: Gói chứa ít nhất 10 MB mã DEX được đo bằng kích thước chưa nén
  • Trò chơi: Gói chứa ít nhất 50 MB mã DEX được đo bằng kích thước chưa nén

Android vitals hiển thị kích thước DEX của ứng dụng, nhưng bạn cũng có thể đo lường kích thước này cục bộ bằng dòng lệnh:

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Để kiểm tra chính xác siêu dữ liệu mà Android vitals dùng để tính điểm, hãy trích xuất tệp r8.json từ gói ứng dụng của bạn:

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json