Khắc phục sự cố về hiệu suất bản dựng

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Trong Android Studio 4.0 trở lên với Trình bổ trợ Android cho Gradle 4.0.0 trở lên, bạn có thể dùng Trình phân tích bản dựng để kiểm tra hiệu suất bản dựng của dự án. Hiệu suất bản dựng có thể chịu ảnh hưởng của một số yếu tố khác nhau. Những yếu tố này có thể thay đổi giữa các bản dựng. Đối với mỗi bản dựng bạn thực hiện, Trình phân tích bản dựng sẽ cố gắng trình bày thông tin quan trọng nhất về mỗi bản dựng để bạn có thể nhanh chóng xác định và giải quyết các lỗi hồi quy trong hiệu suất bản dựng.

Trang này cung cấp thông tin tổng quan về Trình phân tích bản dựng và một số hướng dẫn về cách sử dụng công cụ này để cải thiện hiệu suất của bản dựng của dự án. Hãy thử các chiến lược bổ sung để cải thiện hiệu suất bản dựng bằng cách đọc nội dung Tối ưu hóa tốc độ bản dựng.

Dữ liệu mà trình phân tích trình bày các thay đổi dựa trên mỗi bản dựng. Đặc biệt, trong các bản dựng lớn và phức tạp, có nhiều yếu tố có thể thay đổi tuỳ theo bản dựng, làm thay đổi dữ liệu mà trình phân tích hiển thị cho bạn dưới dạng các yếu tố quan trọng trong thời lượng bản dựng. Do đó, bạn nên xây dựng dự án nhiều lần và so sánh dữ liệu trong trình phân tích để xác định các mẫu.

Bắt đầu

Mỗi lần bạn xây dựng ứng dụng, Trình phân tích bản dựng sẽ tạo một báo cáo và hiển thị dữ liệu từ báo cáo mới nhất trong cửa sổ Bản dựng. Để bắt đầu, hãy tiến hành như sau:

  1. Đảm bảo rằng bạn đang sử dụng phiên bản Android Studio mới nhất có trình bổ trợ Android cho Gradle 4.0.0 trở lên.
  2. Nếu bạn chưa thực hiện việc này, hãy xây dựng ứng dụng theo một trong các cách sau:
    • Nhấp vào Bản dựng > Tạo dự án từ thanh trình đơn.
    • Tạo Android App Bundle hoặc APK bằng cách nhấp vàoBản dựng > (Các) gói bản dựng/APK > (Các) gói bản dựng hoặcBản dựng > (Các) gói bản dựng/APK > (Các) APK bản dựng trên thanh trình đơn.
  3. Mở cửa sổ Bản dựng bằng cách chọn Xem > Cửa sổ công cụ > Bản dựng từ thanh trình đơn.
  4. Trong cửa sổ Bản dựng, hãy nhấp vào thẻ Trình phân tích bản dựng để xem báo cáo bản dựng trong Trình phân tích bản dựng.

Hình 1. Trình phân tích bản dựng cung cấp bảng chi tiết về các trình bổ trợ ảnh hưởng nhiều nhất đến thời lượng bản dựng của bạn.

Khi bạn mở Trình phân tích bản dựng, cửa sổ sẽ hiển thị cho bạn bảng phân tích các trình bổ trợ đóng góp nhiều nhất vào thời lượng bản dựng, cũng như một cây để giúp bạn điều hướng về bản dựng của mình, như trong hình 1.

Bạn cần lưu ý là Trình phân tích bản dựng không hiển thị dữ liệu cho tất cả các nhiệm vụ trong bản dựng. Thay vào đó, trình phân tích này chỉ tập trung vào các nhiệm vụ giúp xác định tổng thời lượng bản dựng.

Nhiệm vụ nào quyết định thời lượng bản dựng?

Gradle xác định việc thực thi nhiệm vụ theo các nhiệm vụ phụ thuộc lẫn nhau, cấu trúc dự án và tải CPU, đồng thời thực thi các nhiệm vụ tuần tự hoặc song. Đối với một bản dựng cụ thể, Trình phân tích bản dựng làm nổi bật tập hợp các nhiệm vụ được thực thi tuần tự để xác định thời lượng bản dựng hiện tại. Giải quyết sự kém hiệu quả trong các nhiệm vụ được làm nổi bật này là điểm xuất phát tốt nhất để giảm thời gian xây dựng tổng thể.

Xin lưu ý rằng bạn có thể thấy một nhóm các nhiệm vụ khác nhau xác định thời lượng bản dựng với mỗi bản dựng mà bạn thực thi. Ví dụ: nếu bạn thực hiện thay đổi đối với cấu hình xây dựng, hãy chạy một bản dựng có một tập hợp các nhiệm vụ khác nhau (chẳng hạn như bản dựng theo mức độ tăng dần) hoặc chạy bản dựng theo các hạn chế khác nhau (ví dụ: tải CPU nặng hơn), cửa sổ Tốc độ bản dựng có thể làm nổi bật tập hợp các nhiệm vụ khác nhau ảnh hưởng nhiều nhất đến thời lượng bản dựng đó. Do sự thay đổi này, bạn có thể sẽ cần sử dụng cửa sổ Tốc độ bản dựng trên nhiều bản dựng để giảm thời lượng bản dựng một cách nhất quán.

Các trình bổ trợ có nhiệm vụ xác định thời lượng bản dựng

Khi bạn mở Trình phân tích bản dựng lần đầu tiên sau khi hoàn tất một bản dựng, cửa sổ sẽ hiển thị dữ liệu về các trình bổ trợ giới thiệu các nhiệm vụ xác định thời lượng bản dựng, như minh họa trong hình 1. Ở bên phải, cửa sổ cung cấp bảng chi tiết trực quan về các trình bổ trợ này và đóng góp liên quan của các trình bổ trợ đối với thời lượng bản dựng. Điều này cho phép bạn nhanh chóng xác định các trình bổ trợ mà bạn có thể cần kiểm tra trước.

Trong ngăn bên trái, bạn có thể mở rộng nút bên cạnh Trình bổ trợ có nhiệm vụ xác định thời lượng bản dựng để xem thêm dữ liệu mà Trình phân tích bản dựng đã thu thập cho mỗi trình bổ trợ. Ví dụ: mỗi trình bổ trợ bao gồm một nút con phân nhóm các nhiệm vụ của nó mà Gradle đã thực thi trong bản dựng cuối cùng và trình phân tích xác định là có vai trò quan trọng đối với tổng thời lượng bản dựng. Mỗi nút hiển thị tổng thời gian để thực thi phần tử con trực tiếp của nút đó. Các khoảng thời gian này có thể giúp bạn tập trung vào việc kiểm tra các nhiệm vụ có tác động lớn nhất đến thời lượng bản dựng.

Nếu Trình phân tích bản dựng xác nhận rằng một số nhiệm vụ có thể được định cấu hình để chạy hiệu quả hơn, thì Trình phân tích bản dựng sẽ phân nhóm các nhiệm vụ đó trong một nút có gắn nhãn Nhắc nhở. Bạn cũng có thể kiểm tra tất cả các nhắc nhở của bản dựng bằng cách mở rộng nút Nhắc nhở cấp cao nhất ở gần cuối ngăn bên trái.

Các nhiệm vụ cần thực hiện để xác định thời lượng bản dựng

Khi bạn chọn nút Các nhiệm vụ xác định thời lượng bản dựng này từ cây, Trình phân tích bản dựng sẽ hiển thị bảng chi tiết trực quan các nhiệm vụ có tác động lớn nhất đến thời lượng bản dựng. Nghĩa là, nút này không phân nhóm các nhiệm vụ theo trình bổ trợ mà thay vào đó xếp hạng từng nhiệm vụ theo thời gian cần có để thực thi.

Mỗi nhiệm vụ được mã hóa bằng màu sắc như sau:

  • Màu hồng: Nhiệm vụ thuộc về trình bổ trợ Android cho Gradle, trình bổ trợ Java cho Gradle hoặc trình bổ trợ Kotlin cho Gradle.
  • Màu xanh dương: Nhiệm vụ thuộc về một trình bổ trợ bên thứ ba hoặc tùy chỉnh. Ví dụ: một trình bổ trợ mà bạn có thể đã áp dụng sau khi tạo dự án mới bằng Android Studio.
  • Màu tím: Nhiệm vụ không thuộc về một trình bổ trợ nhưng được dùng để sửa đổi linh động các thuộc tính của dự án trong thời gian chạy. Ví dụ: đây là các nhiệm vụ bạn có thể xác định trong tệp build.gradle của mình.
  • Màu xanh dương nhạt: Nhiệm vụ liên quan đến các nhiệm vụ khác được trình phân tích làm nổi bật, không có tác động lớn đến thời lượng bản dựng.

Sau khi mở rộng nút Nhiệm vụ xác định thời lượng bản dựng này, bạn có thể nhấp vào từng nhiệm vụ con để tìm hiểu thêm về quá trình thực thi. Ví dụ: trình phân tích cung cấp thông tin chi tiết bổ sung như trình bổ trợ mẹ, loại nhiệm vụ, các nhiệm vụ khác dẫn đến nhiệm vụ này được thực thi và nhiệm vụ có được thực thi tiếp tục hay không, như thể hiện trong hình 2. Trình phân tích cũng có thể đưa ra các nhắc nhở có thể giúp bạn định cấu hình để nhiệm vụ hoạt động hiệu quả hơn.

Hình 2. Trình phân tích bản dựng hiển thị thông tin chi tiết về việc thực thi nhiệm vụ cụ thể.

Kiểm tra các nhắc nhở

Trình phân tích bản dựng đưa ra các nhắc nhở khi phát hiện các nhiệm vụ có thể không được định cấu hình để chạy hiệu quả. Ví dụ: một nhiệm vụ không sử dụng các API Gradle thích hợp để chỉ định dữ liệu đầu vào và kết quả của nhiệm vụ đó sẽ không thể tận dụng các bản dựng có mức độ tăng dần. Nếu bản dựng của bạn bao gồm các nhiệm vụ như vậy, Trình phân tích bản dựng có thể gắn cờ các nhiệm vụ đó bằng nhắc nhở Luôn chạy, vì trình các nhiệm vụ đó phải thực thi với mọi bản dựng, bất kể thông tin đầu vào của các bản dựng có thay đổi hay không.

Để xem tất cả các nhắc nhở mà trình phân tích đã xác định cho bản dựng của bạn, hãy mở rộng nút Nhắc nhở cấp cao nhất. Sau khi mở rộng nút này, bạn có thể thấy các nhắc nhở được phân nhóm theo danh mục. Ví dụ: nút Luôn chạy sẽ phân nhóm các nhiệm vụ mà trình phân tích cho rằng chưa được định cấu hình đúng cách cho các bản dựng có mức độ tăng dần.

Khi bạn nhấp vào một nút con, trình phân tích sẽ hiển thị nội dung nhắc nhở và các bước cần thực hiện để giải quyết vấn đề. Ngoài ra, nếu nhiệm vụ thuộc về một trình bổ trợ mà bạn đã áp dụng cho dự án của mình, trình phân tích sẽ cung cấp một liên kết Tạo báo cáo, như minh họa trong hình 3.

Hình 3. Thông tin chi tiết về nhắc nhở của Trình phân tích bản dựng.

Khi bạn nhấp vào liên kết Tạo báo cáo, một hộp thoại sẽ xuất hiện cùng với thông tin bổ sung có thể giúp nhà phát triển trình bổ trợ giải quyết vấn đề này trong phiên bản mới của trình bổ trợ. Bạn có thể nhấp vào Sao chép để lưu văn bản vào bảng nhớ tạm để dễ dàng dán thông tin vào báo cáo lỗi cho nhà phát triển trình bổ trợ.

Loại nhắc nhở

Dưới đây là các loại nhắc nhở trong báo cáo của Trình phân tích bản dựng và những việc bạn có thể làm đối với các loại nhắc nhở này:

  • Các nhiệm vụ luôn chạy: Một nhiệm vụ luôn chạy sẽ khiến cho các nhiệm vụ khác chạy trên mỗi bản dựng. Điều này là không cần thiết. Có hai lý do chính dẫn đến xuất hiện nhắc nhở này:

    • (Phổ biến hơn) Bạn đã không khai báo đầu vào/đầu ra của nhiệm vụ một cách chính xác. Nếu trong trường hợp này, bạn nên khai báo chính xác các dữ liệu đầu vào và đầu ra cho các nhiệm vụ của mình. Điều này có nghĩa là bạn có thể khai báo các đầu vào và đầu ra của mình nếu có thể, hoặc thay đổi các phiên bản trình bổ trợ nếu các nhiệm vụ đó kích hoạt nhắc nhở là của các trình bổ trợ của bên thứ ba.

    • (Ít phổ biến hơn) Một nhiệm vụ đã upToDateWhen được đặt thành sai, đây là điều bạn nên tránh. Có thể có một số logic đánh giá là sai hoặc upToDateWhen được mã cứng thành sai. Nếu có logic đánh giá là sai, kết quả này có thể là cố ý, khi đó bạn có thể chọn bỏ qua nhắc nhở. Nếu upToDateWhen được mã cứng thành sai, bạn nên xóa mã cứng khỏi mã của mình.

  • Các vấn đề về việc thiết lập nhiệm vụ: Cảnh báo này được tạo cho những nhiệm vụ khai báo cùng một thư mục dữ liệu đầu ra. Điều này có nghĩa là các đầu ra của nhiệm vụ đó rất có thể không được lưu giữ giữa các phiên bản và các nhiệm vụ đó sẽ luôn chạy, ngay cả khi không có thay đổi nào. Để giải quyết nhắc nhở này, bạn nên khai báo các thư mục đầu ra khác nhau cho các nhiệm vụ của mình. Điều này có nghĩa là bạn có thể tự khai báo các thư mục đầu ra khác nhau nếu có thể hoặc thay đổi phiên bản trình bổ trợ nếu các nhiệm vụ kích hoạt nhắc nhở là của các trình bổ trợ bên thứ ba.

  • Trình xử lý chú giải không tăng dần: Nhắc nhở này được tạo trong các trường hợp trình xử lý chú giải không tăng dần và khiến cho nhiệm vụ JavaCompile luôn chạy không tăng dần. Để xử lý nhắc nhở này, bạn nên chuyển sang một trình xử lý chú giải tăng dần.

  • Lưu cấu hình vào bộ nhớ đệm: Nhắc nhở này sẽ hiển thị nếu lưu cấu hình vào bộ nhớ đệm không được bật cho dự án của bạn. Trình phân tích bản dựng trình bày một trình tự các bản dựng để kiểm tra xem dự án của bạn có tương thích với tính năng lưu cấu hình vào bộ nhớ đệm hay không. Nếu kiểm tra khả năng tương thích thành công, bạn có thể bật tính năng lưu cấu hình vào bộ nhớ đệm từ Trình phân tích bản dựng.

  • Kiểm tra Jetifier: Nhắc nhở này hiển thị nếu cờ enableJetifier xuất hiện và được bật trong dự án của bạn; nghĩa là nếu bạn có android.enableJetifier=true trong tệp gradle.properties. Trình phân tích bản dựng có thể thực hiện quá trình kiểm tra để xem liệu bạn có thể xóa cờ một cách an toàn để giúp dự án của bạn đạt hiệu suất bản dựng cao hơn và di chuyển khỏi các Thư viện hỗ trợ Android không được duy trì hay không.