Điểm khác biệt giữa Hồ sơ cơ sở và Hồ sơ khởi động

Tài liệu này giải thích sự khác biệt giữa Hồ sơ cơ sở và Hồ sơ khởi động.

Bạn có thể sử dụng Trình bổ trợ Gradle cho Hồ sơ cơ sở để tự động ghi lại các tệp hồ sơ cơ sở mà con người có thể đọc được do các kiểm thử BaselineProfileRule tạo ra. Khi tạo ứng dụng, Trình bổ trợ Android cho Gradle (AGP) sẽ biên dịch các quy tắc hồ sơ mà con người có thể đọc được này thành định dạng nhị phân, được đóng gói dưới dạng baseline.prof trong Gói ứng dụng Android (APK) hoặc Android App Bundle (AAB) mà Android Runtime (ART) có thể sử dụng hiệu quả để biên dịch trên thiết bị, miễn là hồ sơ nhị phân nhỏ hơn 1, 5 MB.

Các tệp hồ sơ được tạo thường có tên là startup-prof.txtbaseline-prof.txt.

Hồ sơ cơ sở

Tệp Hồ sơ cơ sở chứa một bộ quy tắc toàn diện mà ART dùng để biên dịch trước các đường dẫn mã thường dùng, giúp tối ưu hoá quá trình khởi động ứng dụng, giảm hiện tượng giật khi tương tác và cải thiện hiệu suất tổng thể khi chạy.

Tệp Hồ sơ cơ sở thường là một tập hợp con của các quy tắc có trong Hồ sơ khởi động. Tệp này bao gồm tất cả các quy tắc cần thiết để tối ưu hoá quá trình khởi động ứng dụng (được tạo thông qua tác vụ baselineProfile Gradle), cùng với các hồ sơ bổ sung cho những hành trình quan trọng khác của người dùng. Ví dụ: thao tác cuộn và điều hướng giữa các màn hình.

Các quy tắc không khởi động này được tạo bất kể giá trị của trường cấu hình includeInStartupProfile. Để biết thêm thông tin, hãy xem bài viết Tổng quan về Hồ sơ cơ sở.

Hồ sơ khởi động

Tệp Hồ sơ khởi động chứa các quy tắc được tối ưu hoá đặc biệt cho đường dẫn khởi động của ứng dụng. Trong quá trình biên dịch, D8 và R8 sử dụng mã byte Java để tạo ra các tệp Dalvik Executable (DEX). Cả D8 và R8 đều sử dụng Hồ sơ khởi động để tối ưu hoá bố cục DEX bằng cách đặt mã khởi động quan trọng vào tệp .dex chính để tải lớp nhanh hơn. Để đạt được mức tăng hiệu suất đáng kể nhất, mã khởi động phải nằm trong tệp .dex chính này. Nếu kích thước tích luỹ của mã khởi động quá lớn, thì mã đó sẽ tràn vào các tệp DEX tiếp theo. Các tệp này thường chứa các lớp và phương thức không cần thiết, đồng thời làm chậm quá trình khởi động.

Mặc dù Hồ sơ khởi động cung cấp siêu dữ liệu cần thiết cho việc tối ưu hoá bố cục DEX, nhưng việc tối ưu hoá mã R8 có thể rất hiệu quả trong việc hỗ trợ quy trình này. Bằng cách xoá mã không dùng đến và giảm thiểu mã byte, R8 sẽ giảm tổng dung lượng của logic khởi động. Việc giảm này làm tăng khả năng mã quan trọng vẫn nằm trong tệp .dex chính, ngăn chặn tình trạng tràn và đảm bảo quá trình thực thi hiệu quả hơn trên nhiều phiên bản Android. Thông thường, bạn chỉ nên đặt includeInStartupProfile thành true cho các trường hợp kiểm thử cần thiết cho màn hình hiển thị ban đầu của ứng dụng.

Để biết thêm thông tin, hãy xem bài viết Tổng quan về Hồ sơ khởi động.