Sau khi bạn bật tính năng tối ưu hoá ứng dụng, hãy kiểm tra để đảm bảo ứng dụng của bạn đang hoạt động như dự kiến và cấu hình R8 đang hoạt động như mong đợi. Sau đây là các bước chung:
- Kiểm thử hành trình trọng yếu của người dùng (CUJ) trong ứng dụng: Ví dụ: đảm bảo người dùng có thể đăng nhập và thực hiện các nhiệm vụ quan trọng khác.
- Đo lường mức tăng hiệu suất bằng điểm chuẩn: Đo điểm chuẩn cho ứng dụng trước và sau khi bật tính năng tối ưu hoá ứng dụng.
Nếu bạn phát hiện vấn đề, R8 sẽ cung cấp các công cụ để giúp bạn khắc phục sự cố. Nếu bạn không thể giải quyết vấn đề với R8, hãy gửi lỗi.
Mẹo chung
Các vấn đề với R8 thường chỉ xảy ra với ứng dụng của bạn, nhưng sau đây là một số mẹo chung để giúp bạn gỡ lỗi dễ dàng hơn:
- Tạm thời tắt tính năng làm rối mã: R8 làm rối mã trong quá trình tối ưu hoá. Việc làm rối mã nguồn thường không phải là nguyên nhân gây ra lỗi, nhưng việc làm rối mã nguồn khiến việc gỡ lỗi trở nên khó khăn hơn. Thêm cờ
‑dontobfuscate
và‑dontoptimize
vào tệp quy tắc giữ lại để giúp bạn xác định chính xác mã có vấn đề. Kiểm tra tính năng phản chiếu: Nếu bạn gặp phải trường hợp ngoại lệ không có phần tử như vậy, chẳng hạn như
Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace
,trường hợp ngoại lệ thường có nghĩa là trường có liên quan đang được sử dụng thông qua phản chiếu và bạn phải thêm một quy tắc giữ lại.
Kiểm tra mã byte: Hầu hết các vấn đề về R8 đều yêu cầu kiểm tra mã byte. Bạn có thể thực hiện việc này bằng các công cụ như Công cụ phân tích APK.
Kiểm tra xem quy tắc nào được áp dụng
Để xuất ra báo cáo đầy đủ về tất cả quy tắc mà R8 đang áp dụng khi xây dựng dự án, hãy đưa nội dung sau vào tệp proguard‑rules.pro
của mô-đun ứng dụng:
-printconfiguration <output-dir>/<report-name>.txt
Bạn có thể chỉ định bất kỳ đường dẫn và tên tệp nào. Nếu bạn không chỉ định đường dẫn hoặc tên tệp, R8 sẽ xuất báo cáo quy tắc tại <module-name>/build/outputs/mapping/<build-type>/configuration.txt
.
Tìm hiểu lý do giữ lại mã
Nếu bạn thấy mã được giữ lại mà bạn dự kiến sẽ bị xoá, hãy sử dụng tuỳ chọn cấu hình ‑whyareyoukeeping
để tìm hiểu lý do mã được giữ lại. R8 sẽ xuất một đường dẫn từ mã được giữ lại đến một trong các điểm truy cập của ứng dụng. Để biết thêm thông tin, hãy xem tài liệu về ‑whyareyoukeeping
trong hướng dẫn Proguard.
Khôi phục dấu vết ngăn xếp ban đầu
Mã do R8 xử lý sẽ thay đổi theo nhiều cách để dấu vết ngăn xếp không còn tham chiếu đến mã gốc. Ví dụ: số dòng và tên của các lớp và phương thức có thể thay đổi. Để khôi phục dấu vết ngăn xếp ban đầu, R8 cung cấp công cụ dòng lệnh retrace, được đóng gói kèm với gói công cụ dòng lệnh.
Để sử dụng tính năng truy xuất lại, hãy cung cấp cho tính năng này một tệp ánh xạ và một tệp dấu vết ngăn xếp. Tệp ánh xạ, có tên là mapping.txt
, được tự động đóng gói với Android App Bundle (AAB). Để biết thêm thông tin chi tiết, hãy xem tài liệu về tính năng theo dõi lại và bài viết trên Trung tâm trợ giúp của Play Console về cách gỡ rối mã nguồn cho các dấu vết ngăn xếp sự cố.