Báo lỗi

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.

Chúng tôi muốn giúp bạn sửa lỗi! Nhưng nhiều lỗi lại không được cung cấp những thông tin bắt buộc. Vì vậy, chúng tôi đang tập trung nguồn lực hạn chế của mình vào những lỗi có báo cáo đầy đủ. Để những lỗi bạn gặp phải có thêm cơ hội được khắc phục, vui lòng dành thời gian đọc tài liệu này.

Nếu không làm theo các bước này, chúng tôi sẽ tạm đóng lỗi được bạn báo cáo. Trong trường hợp đó, bạn chỉ cần gửi lại thông tin bổ sung.

Ngoài ra, xin lưu ý rằng công cụ theo dõi lỗi không phải là diễn đàn hỗ trợ. Nếu bạn có thắc mắc về cách sử dụng các công cụ hoặc cách làm cho ứng dụng Android của mình hoạt động, hãy truy cập stackoverflow.com hoặc một trong số các Tài nguyên hỗ trợ nhà phát triển Android.

Cách báo cáo lỗi

  1. Hãy đảm bảo rằng bạn đang sử dụng các phiên bản mới nhất của các công cụ đó. Điều này giúp chúng tôi không phải xem xét các lỗi đã được khắc phục. Nếu có thể, hãy tìm kiếm các vấn đề tương tự trong Công cụ theo dõi lỗi dành cho Android Studio để xem sự cố bạn đang gặp có được báo cáo hay không (thường thì có thể sử dụng thông báo lỗi làm từ khoá tìm kiếm).

  2. Mở một mục báo cáo lỗi trên Android Studio bằng cách chọn Help > Submit Feedback (Trợ giúp > Gửi ý kiến phản hồi). Đây là cách dễ dàng nhất, vì các thông tin như phiên bản Android Studio, phiên bản Java và thông tin hệ thống cần thiết để tái hiện sự cố đã được điền sẵn trong báo cáo lỗi. (Ngoài ra, bạn có thể gửi báo cáo lỗi tại đây và thêm thông tin phiên bản theo cách thủ công.)

  3. Mô tả các bước chính xác để tái hiện sự cố. Nếu chúng tôi có thể tái hiện sự cố trong lần thử đầu tiên, thì cơ hội khắc phục sẽ cao hơn nhiều. Nếu có thể, hãy thêm một đoạn mã (hoặc tốt hơn là trỏ đến một dự án github có thể dùng để tái hiện lỗi). Ảnh chụp màn hình giúp cho biết nội dung bạn đang quan sát cũng rất hữu ích.

  4. Mô tả nội dung bạn đã quan sát được, cũng như dự kiến những tình huống sẽ xảy ra.

  5. Chọn một phần tóm tắt mô tả lỗi. Bạn sẽ ngạc nhiên số lượng lỗi được gửi cùng phần tóm tắt "Lỗi", "Vấn đề", "Ngoại lệ", "Không hoạt động" v.v. ,

  6. Đối với một số loại lỗi, chúng tôi cần thêm thông tin:

Thông tin chi tiết về các lỗi trong Android Studio

Bao gồm các thông tin bổ sung dành riêng cho các lỗi trong Android Studio sau đây.

Nếu IDE bị treo

Nếu chính IDE có vẻ như hoạt động rất chậm hoặc bị treo hẳn, hãy tạo một số tệp kết xuất luồng (thread dumps) và đính kèm vào báo cáo lỗi. Những tệp này cho chúng tôi biết IDE đang bận vì thực hiện tác vụ gì (hoặc đang chờ tài nguyên bị cạnh tranh nào).

Nếu IDE đang hoạt động chậm nhưng không bị treo, bạn cũng sẽ đính kèm tệp idea.log bằng cách chọn Help > Show Log in Files (Trợ giúp > Hiện nhật ký trong tệp) hoặc Show Log in Finder (Hiện nhật ký trong Trình tìm kiếm) trên máy Mac. Điều này giúp chúng tôi biết lý do IDE trở nên chậm có phải là do liên tục gửi lỗi vào nhật ký hay không.

Sử dụng hồ sơ CPU để chẩn đoán sự cố thiết bị hoạt động chậm

Nếu bạn đang gặp phải hiện tượng Android Studio hoạt động chậm, hồ sơ CPU có thể giúp chẩn đoán sự cố trong một số trường hợp. Hãy làm theo các bước sau để chụp ảnh hồ sơ CPU bằng trình bổ trợ Kiểm thử hiệu năng Android Studio/IntelliJ (Android Studio/IntelliJ Performance Testing):

  1. Cài đặt trình bổ trợ. Bạn có thể thực hiện việc này trực tiếp trên Android Studio bằng cách tìm kiếm mục "Kiểm thử hiệu năng" trong trang web thương mại về bổ trợ (plugin marketplace). Ngoài ra, bạn có thể tải một phiên bản tương thích với Andoid Studio xuống từ trang web của trình bổ trợ.

  2. Tạo hồ sơ CPU. Khi Android Studio có vẻ chậm, hãy chọn "Start CPU Usage Profiling" (Bắt đầu phân tích mức sử dụng CPU), rồi thử lặp lại một vài hành động có thể gây ra vấn đề về độ trễ (hoàn tất mã, nhập và chờ đánh dấu, v.v.) rồi nhấn vào "Stop CPU Usage Profiling" (Dừng phân tích mức sử dụng CPU).

  3. Chia sẻ tệp hồ sơ. Một bong bóng sẽ xuất hiện, cung cấp tên tệp tổng quan nhanh CPU, tệp này phải tuân theo định dạng snapshot-NNN. Vui lòng chia sẻ tệp tổng quan nhanh đó trong báo cáo lỗi.

Nếu IDE hết bộ nhớ

Đôi khi, các sự cố về bộ nhớ trong Android Studio rất khó được tái hiện và báo cáo. Để giải quyết vấn đề này, Android Studio có một tính năng giúp báo cáo mức sử dụng bộ nhớ. Bạn có thể gửi báo cáo này cho Nhóm Android Studio để hỗ trợ việc xác định nguồn gốc của các sự cố về bộ nhớ.

Chạy báo cáo mức sử dụng bộ nhớ

Để chạy tính năng báo cáo mức sử dụng bộ nhớ, hãy làm theo các bước sau:

  1. Nhấp vào Help > Analyze Memory Usage (Trợ giúp > Phân tích mức sử dụng bộ nhớ) trên thanh trình đơn.

    Android Studio sẽ kết xuất vùng nhớ khối xếp và nhắc bạn khởi động lại IDE. Nếu bạn khởi động lại IDE, quá trình phân tích kết xuất vùng nhớ khối xếp sẽ bắt đầu ngay lập tức. Nếu không, quá trình phân tích kết xuất vùng nhớ khối xếp sẽ bắt đầu vào lần tiếp theo bạn chạy Android Studio. Ở một trong hai trường hợp, IDE sẽ thông báo cho bạn khi báo cáo mức sử dụng bộ nhớ đã sẵn sàng cho việc xem xét.

    Thông báo cho biết báo cáo mức sử dụng bộ nhớ đã sẵn sàng cho việc xem xét.

  2. Nhấp vào Xem lại báo cáo (Review Report).

    Trước khi gửi báo cáo, bạn có thể xem lại tất cả thông tin có trong báo cáo.

    Báo cáo mức sử dụng bộ nhớ.

  3. Sau khi bạn hoàn tất việc xem lại, hãy sao chép và dán nội dung của báo cáo vào một tệp và đính kèm tệp đó khi bạn gửi báo cáo lỗi.

    Việc gửi thông tin báo cáo theo cách này giúp đảm bảo rằng Nhóm Android Studio có thể liên hệ với bạn bằng Công cụ theo dõi lỗi trong khi chúng tôi kiểm tra các vấn đề về bộ nhớ của bạn.

Nếu IDE gặp sự cố hoặc gửi ngoại lệ

Đối với các loại sự cố khác, hãy đính kèm tệp idea.log. Chọn Help > Show Log in Files (Trợ giúp > Hiển thị nhật ký trong tệp) hoặc Show Log in Finder (Hiển thị nhật ký trong Trình tìm kiếm) trên máy Mac.

Tạo kết xuất luồng (thread dump)

Tệp kết xuất luồng là bản in tất cả các luồng chạy trong Máy ảo Java (JVM), trong đó sẽ in ra tất cả các khung ngăn xếp đối với mỗi luồng. Tệp này giúp bạn dễ dàng xem được IDE đang bận thực hiện tác vụ gì, đặc biệt là khi tạo một vài kết xuất luồng cách nhau vài giây.

Đối với các lỗi được báo cáo, trong đó IDE cực kỳ bận rộn với CPU được cố định, hoặc khi IDE có vẻ như bị treo, thì một tệp kết xuất luồng có thể xác định mã nào đang hoạt động nhiều hoặc đoạn mã nào đang cạnh tranh về tài nguyên và gây tắc nghẽn.

JDK đưa ra một công cụ có tên "jstack" để có thể dùng để tạo tệp kết xuất luồng. Trước tiên, bạn cần tìm giá trị nhận dạng của quá trình Android Studio. Bạn có thể dùng lệnh "jps" để làm việc đó. (Cả jstack và jps đều nằm trong thư mục bin của JDK. Nếu đã cài đặt nhiều JDK, bạn nên sử dụng cùng một phiên bản với phiên bản đang chạy Android Studio (có thể xem đó là phiên bản nào trong hộp Giới thiệu của Android Studio.)

Trên Linux, Mac:

jps -mv | grep studio

Dành cho Windows:

jps -mv | findstr studio

Chẳng hạn, lệnh này sẽ in ra một dòng dài như sau:

$ jps -mv | grep studio
37605 -Dfile.encoding=UTF-8 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djna.nosys=true ...

Số đầu tiên ở bên trái (trong trường hợp này là 37605) là giá trị nhận dạng của quá trình (process ID).

Tiếp theo, bạn có thể tạo tệp kết xuất luồng và lưu vào tệp dump.txt như sau:

jstack -l pid >> dump.txt

Nếu cách này không hiệu quả, có một số cách cụ thể để tạo tệp kết xuất luồng dành riêng cho một số nền tảng cụ thể; hãy xem Trang hỗ trợ IntelliJ để được hướng dẫn chi tiết.

Thông tin chi tiết về công cụ bản dựng và lỗi Gradle

Mô tả lỗi bằng cách đính kèm một dự án thực tế hoặc dự án mẫu Đây là cách tốt nhất để đảm bảo tất cả thông tin cần thiết đều được ghi lại. Hãy nhớ xoá mọi thông tin nhạy cảm trước khi chia sẻ.

Nếu bạn không thể chia sẻ một dự án, vui lòng cho biết phiên bản của các công cụ mà bạn đang sử dụng (trước hết hãy thử sử dụng các phiên bản ổn định hoặc phiên bản dùng thử mới nhất):

  • Phiên bản trình bổ trợ Android cho Gradle: Chọn File > Project Structure (Tệp > Cấu trúc dự án), nhấp vào Project (Dự án), rồi tìm Android Gradle Plugin Version (Phiên bản Trình bổ trợ Android cho Gradle).
  • Phiên bản Gradle: Trong trang ở trên, hãy tìm Gradle Version (Phiên bản Gradle).
  • Phiên bản Android Studio: Chọn Help > About (Trợ giúp > Giới thiệu) rồi tìm phiên bản Android Studio.

Ngoài ra, hãy đưa vào các thông tin sau, nếu có:

  • Nếu một hành vi đã thay đổi đột ngột từ một phiên bản cũ sang phiên bản hiện tại, hãy chỉ ra cả hai phiên bản.
  • Nếu việc tạo bản dựng thất bại vì gặp lỗi, hãy chạy bản dựng từ dòng lệnh bằng tuỳ chọn --stacktrace (tức là ./gradlew <task> --stacktrace) và cung cấp cho chúng tôi dấu vết ngăn xếp.
  • Nếu việc tạo bản dựng mất nhiều thời gian hơn dự kiến, hãy thử một trong các cách sau:
    • Chạy ./gradlew <task> --scan và chia sẻ với chúng tôi kết quả quét bản dựng Gradle được tạo.
    • Chạy ./gradlew <task> -Pandroid.enableProfileJson=true và chia sẻ các tệp Chrome-trace được tạo trong thư mục <root-project>/build/android-profile.

Thông tin chi tiết về lỗi của Trình mô phỏng Android

Cách dễ nhất để thu thập thông tin chi tiết về trình mô phỏng là sử dụng tính năng File a bug (Gửi báo cáo lỗi) trong các tuỳ chọn kiểm soát mở rộng:

  1. Nhấp vào biểu tượng More (Thêm) trong bảng điều khiển trình mô phỏng.
  2. Trong cửa sổ Extended controls (Kiểm soát mở rộng), hãy chọn Báo cáo lỗi (Bug Report) ở bên trái.

    Thao tác này sẽ mở ra một màn hình trình bày thông tin chi tiết về báo cáo lỗi như ảnh chụp màn hình, thông tin cấu hình AVD và nhật ký báo cáo lỗi. Bạn có thể nhập các bước để tái hiện lỗi ở đây hoặc đợi và nhập các bước đó vào báo cáo được tạo ở bước tiếp theo.

  3. Đợi báo cáo lỗi hoàn tất việc thu thập thông tin, sau đó nhấp vào Send to Google (Gửi tới Google). Thao tác này sẽ mở ra một cửa sổ để bạn lưu báo cáo lỗi vào một thư mục, sau đó mở trình duyệt của bạn để tạo báo cáo trong Công cụ theo dõi lỗi của Google, trong đó có điền sẵn thông tin chi tiết cần thiết về trình mô phỏng.

  4. Trong báo cáo, hãy hoàn tất mọi thông tin chi tiết còn lại (chẳng hạn như các bước để tái hiện lỗi) và đính kèm các tệp đã lưu khi bạn tạo báo cáo lỗi.

Nếu không, bạn phải nhập những thông tin sau theo cách thủ công:

  • Phiên bản Trình mô phỏng. Trong trình mô phỏng, hãy mởExtended controls (Tuỳ chọn kiểm soát mở rộng), nhấp vàoHelp (Trợ giúp), sau đó nhấp vào thẻ About (Giới thiệu) để tìm Emulator version (Phiên bản trình mô phỏng)
  • Phiên bản Bộ công cụ SDK Android. Chọn Tools > SDK Manager (Công cụ > Trình quản lý SDK), nhấp vào SDK Tools (Bộ công cụ SDK), sau đó xác định Android SDK Tools (Bộ công cụ SDK Android)
  • Mô hình CPU lưu trữ.
    • Trên Linux: Mở /proc/cpuinfo
    • Trên Windows: Nhấp chuột phải vào My Computer (Máy tính của tôi) rồi chọn Properties (Thuộc tính)
    • Trên máy Mac: Nhấp vào biểu tượng Apple rồi nhấp vào About This Mac (Giới thiệu về máy Mac này)
  • Tên thiết bị. Trên AVD Manager (Trình quản lý thiết bị ảo Android), hãy nhấp để mở trình đơn thả xuống trong cột Actions (Hành động) của thiết bị, sau đó chọn View Details (Xem chi tiết) (hoặc mở tệp $avdname.avd/config.ini). Tìm mục nhập có cụm từ hw.device.name. Ví dụ: hw.device.name=Nexus 5