Khắc phục sự cố về hiệu suất bản dựng bằng Trình phân tích bản dựng

Bạn có thể sử 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ố. 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. Để biết thêm các chiến lược cải thiện hiệu suất của bản dựng, hãy đọc bài viết Tối ưu hoá tốc độ của 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 của 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ổ Build (Bản dựng).

Để bắt đầu, hãy làm như sau:

  1. 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 Build > Make Project (Bản dựng > Tạo dự án) trong thanh trình đơn.
    • Để tạo Android App Bundle hoặc APK, hãy nhấp vào Build > Build Bundle(s)/APK(s) > Build Bundle(s) (Bản dựng > Gói bản dựng/APK > Gói bản dựng) hoặc Build > Build Bundle(s)/APK(s) > Build APK(s) (Bản dựng > Gói bản dựng/APK > APK bản dựng) trong thanh trình đơn.
  2. Để mở cửa sổ Build (Bản dựng), hãy chọn View > Tool Windows > Build (Xem > Cửa sổ công cụ > Bản dựng) trong thanh trình đơn.
  3. Để xem báo cáo bản dựng trong Build Analyzer (Trình phân tích bản dựng), hãy nhấp vào thẻ Build Analyzer (Trình phân tích bản dựng) trong cửa sổ Build (Bản dựng).

Xem các trình bổ trợ có nhiệm vụ xác định thời lượng của 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ị thông tin tổng quan về bản phân tích bản dựng, như trong hình 1.

Hình 1. Trang tổng quan của Trình phân tích bản dựng đưa ra phần tóm tắt kết quả.

Để xem bảng chi tiết về các trình bổ trợ có nhiệm vụ xác định thời lượng bản dựng, hãy nhấp vào Plugins with tasks impacting build duration (Trình bổ trợ có nhiệm vụ tạo tác động đến thời lượng bản dựng) trên trang tổng quan. Bạn cũng có thể chọn Tasks (Nhiệm vụ) trong trình đơn thả xuống để xác nhận rằng đã chọn mục Group by plugin (Nhóm theo trình bổ trợ).

Hình 2. 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.

Ngăn nhiệm vụ hiển thị các nhiệm vụ đóng góp vào thời lượng bản dựng. Mọi nhiệm vụ có vấn đề đều có biểu tượng cảnh báo bên cạnh.

Biểu đồ cho biết mức độ đóng góp của nhiệm vụ đối với thời lượng tổng thể của bản dựng.

Ngăn chi tiết cung cấp thông tin chi tiết hơn về vấn đề phát hiện cho nhiệm vụ đã chọn.

Mỗi nút hiển thị tổng thời gian cần để 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.

Xem các nhiệm vụ xác định thời lượng của bản dựng

Để xem bảng chi tiết các nhiệm vụ đang đóng góp vào thời lượng bản dựng, hãy nhấp vào Tasks impacting build duration (Nhiệm vụ ảnh hưởng đến thời lượng bản dựng) trên trang tổng quan. Bạn cũng có thể chọn Tasks (Nhiệm vụ) trong trình đơn thả xuống để xác nhận rằng đã bỏ chọn mục Group by plugin (Nhóm theo trình bổ trợ).

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

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 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ể.

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 sửa đổi cấu hình bản dựng, chạy một bản dựng có một nhóm các nhiệm vụ khác – chẳng hạn như bản dựng tăng dần – hoặc chạy một bản dựng trong các điều kiện ràng buộc khác, cửa sổ Build Speed (Tốc độ bản dựng) có thể làm nổi bật một nhóm nhiệm vụ khác có ả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ổ Build Speed (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.

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

  • Màu xanh dương nhạt: Nhiệm vụ là của 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ụ là của trình bổ trợ bên thứ ba hoặc trình bổ trợ tuỳ chỉnh, chẳng hạn như trình bổ trợ mà bạn đã áp dụng sau khi tạo dự án mới bằng Android Studio.
  • Màu tím: Nhiệm vụ không phải của một trình bổ trợ nhưng được dùng để sửa đổi một cách linh hoạt các thuộc tính của dự án trong thời gian chạy. Ví dụ: các nhiệm vụ mà bạn có thể xác định trong các tệp build.gradle.
  • Màu xám: 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.

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ư minh hoạ trong hình 2. Trình phân tích cũng có thể đưa ra các cảnh báo có thể giúp bạn định cấu hình để nhiệm vụ hoạt động hiệu quả hơn.

Kiểm tra các cảnh báo

Nếu Trình phân tích bản dựng phát hiện một số nhiệm vụ có thể được định cấu hình để chạy hiệu quả hơn, thì bạn sẽ thấy một cảnh báo.

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à dữ liệu đầu ra 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 cảnh báo Always-run (Luôn chạy), vì các nhiệm vụ đó phải thực thi với mọi bản dựng, bất kể dữ liệu đầu vào của các bản dựng có thay đổi hay không.

Để xem tất cả các cảnh báo mà trình phân tích đã xác định cho bản dựng của bạn, hãy nhấp vào All warnings (Tất cả cảnh báo) trên trang tổng quan hoặc chọn Warnings (Cảnh báo) từ trình đơn thả xuống. Khung hiển thị Cảnh báo cho thấy các cảnh báo được nhóm theo danh mục. Ví dụ: nút Always-run (Luôn chạy) sẽ phân nhóm các nhiệm vụ mà trình phân tích xác định 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ẽ mô tả bản chất của cảnh báo 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, thì trình phân tích sẽ cung cấp một đường liên kết Generate report (Tạo báo cáo), như minh hoạ trong hình 4.

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

Khi bạn nhấp vào đường liên kết Generate report (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 đề trong phiên bản mới của trình bổ trợ. Bạn có thể nhấp vào Copy (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ợ hơn.

Loại cảnh báo

Trình phân tích bản dựng báo cáo các loại cảnh báo sau:

  • Always run tasks (Các nhiệm vụ luôn chạy): Là nhiệm vụ luôn chạy khiến 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ó 2 lý do chính khiến bạn thấy cảnh báo này:

    • (Phổ biến hơn) Bạn không khai báo dữ liệu đầu vào/đầu ra của nhiệm vụ một cách chính xác. Nếu là 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ể tự khai báo các dữ liệu đầ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 cảnh báo 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ụ đã đặt upToDateWhen thành false (sai), đây là điều bạn nên tránh. Có thể có một số logic đánh giá được chuyển thành false (sai) hoặc upToDateWhen được mã hoá cứng chuyển thành false (sai). Nếu có logic đánh giá được chuyển thành false (sai), kết quả này có thể là cố ý, khi đó bạn có thể chọn bỏ qua cảnh báo. Nếu upToDateWhen được mã hoá cứng chuyển thành false (sai), bạn nên loại bỏ quá trình mã hoá cứng khỏi mã của mình.

  • Task setup issues (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 là dữ liệu đầu ra. Điều này có nghĩa là các dữ liệu đầ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 cảnh báo này, bạn nên khai báo các thư mục dữ liệu đầ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 cảnh báo 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: Cảnh báo 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à dẫn đến nhiệm vụ JavaCompile luôn chạy không tăng dần. Để xử lý cảnh báo này, hãy 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: Cảnh báo này sẽ hiển thị nếu tính năng 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 quá trình kiểm tra khả năng tương thích diễn ra 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 trong Trình phân tích bản dựng.

  • Kiểm tra Jetifier: Cảnh báo 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ể xoá 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.

Kiểm tra mức tác động của lượt tải xuống

Trình phân tích bản dựng cung cấp thông tin tóm tắt về thời gian dùng để tải các phần phụ thuộc xuống và chế độ xem chi tiết về lượt tải xuống trên mỗi kho lưu trữ. Để kiểm tra mức tác động của lượt tải xuống, hãy chọn Downloads (Lượt tải xuống) trong trình đơn thả xuống.

Bạn có thể dùng thông tin này để xác định xem việc tải phần phụ thuộc không mong muốn xuống có tác động tiêu cực đến hiệu suất của bản dựng hay không. Điều này đặc biệt quan trọng trong quá trình tạo các bản dựng tăng dần, không tải cấu phần phần mềm xuống một cách nhất quán.

Cụ thể, bạn có thể dùng thông tin này để xác định các vấn đề về cấu hình, chẳng hạn như sử dụng phiên bản phần phụ thuộc động gây ra lượt tải xuống không mong muốn. Ngoài ra, nếu số lượng yêu cầu không thành công của một kho lưu trữ cụ thể ở mức cao, thì bạn nên xoá hoặc chuyển kho lưu trữ đó xuống thấp hơn trong cấu hình kho lưu trữ của mình.

Hình 5. Build Analyzer (Trình phân tích bản dựng) cho thấy mức tác động của lượt tải xuống đối với thời lượng bản dựng.