Nhận báo cáo sự cố dễ đọc trên trang tổng quan Crashlytics

Theo mặc định, Firebase Crashlytics sẽ tự động xử lý các tệp biểu tượng gỡ lỗi (dSYM) để cung cấp cho bạn báo cáo sự cố đã được gỡ rối mã nguồn và con người có thể đọc được. Bạn thường định cấu hình hành vi này trong quá trình thiết lập Crashlytics ban đầu trong ứng dụng, cụ thể là bằng cách thêm tập lệnh chạy tự động tải tệp dSYM lên trong giai đoạn xây dựng ứng dụng.

Rất tiếc, có một vài trường hợp có thể khiến tệp dSYM tự động tải lên không thành công. Hướng dẫn này đưa ra một số cách khắc phục sự cố khi Crashlytics không tìm được tệp dSYM của ứng dụng.

Đảm bảo rằng Xcode có thể tự động xử lý dSYM và tải tệp lên

Khi thiết lập Crashlytics trong ứng dụng, bạn đã định cấu hình một tập lệnh chạy để tự động xử lý dSYM và tải các tệp lên.

Hãy đảm bảo rằng cấu hình của bạn cho tập lệnh chạy Crashlytics đã cập nhật với các yêu cầu mới bắt đầu bằng Xcode 15. Nếu cấu hình của bạn không cập nhật, bạn có thể gặp lỗi sau:
error: Info.plist Error Unable to process Info.plist at path ....

Cụ thể, Xcode 15 trở lên yêu cầu bạn cung cấp một nhóm vị trí tệp hoàn chỉnh hơn. Đối với tập lệnh chạy Crashlytics (firebase-ios-sdk/Crashlytics/run), hãy đảm bảo rằng bạn có chế độ thiết lập sau:

  1. Nhấp vào thẻ Build Phases (Giai đoạn tạo bản dựng), sau đó mở rộng phần Run Script (Chạy tập lệnh).

  2. Trong mục Input Files (Tệp nhập), hãy đảm bảo bạn có đường dẫn đến vị trí của các tệp sau:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

Kiểm tra xem Xcode có tạo ra dSYM hay không

Thường thì các tệp dSYM bị thiếu vì Xcode không tạo ra các tệp đó. Khi tải lên không thành công, Crashlytics sẽ hiển thị cảnh báo "Thiếu dSYM" trong bảng điều khiển của Firebase. Nếu bạn nhận được cảnh báo này, trước tiên, hãy kiểm tra để đảm bảo rằng Xcode đang tạo đúng dSYM cho mọi bản dựng:

  1. Mở dự án của bạn trong Xcode, sau đó chọn tệp dự án trong Xcode Navigator.

  2. Chọn mục tiêu bản dựng chính.

  3. Mở thẻ Build Settings (Cài đặt bản dựng) của mục tiêu, sau đó nhấp vào All (Tất cả).

  4. Tìm kiếm debug information format

  5. Đặt Debug information Format (Định dạng thông tin gỡ lỗi) thành DWARF with dSYM File (Định dạng thông tin gỡ lỗi với tệp dSYM) cho mọi loại bản dựng.

  6. Xây dựng lại ứng dụng.

Bây giờ, báo cáo sự cố của bạn sẽ xuất hiện trong trang tổng quan Crashlytics. Nếu vấn đề vẫn tiếp diễn hoặc bạn gặp các lỗi khác, hãy thử tìm dSYMtải các lỗi đó lên Crashlytics theo cách thủ công.

Xác định vị trí dSYM trên máy cục bộ

Chạy lệnh sau để hiển thị tất cả các UUID của dSYMs trên máy của bạn và tìm dSYM bị thiếu:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

Sau khi bạn tìm thấy dSYM, hãy tải tệp đó lên Crashlytics theo cách thủ công. Nếu lệnh mdfind không trả về kết quả nào, thì bạn có thể tìm trong thư mục Products chứa .app (theo mặc định, thư mục Products nằm trong Derived Data). Nếu ứng dụng của bạn đã được phát hành chính thức, thì bạn cũng có thể tìm dSYM trong thư mục .xcarchive trên ổ đĩa:

  1. Trong Xcode, hãy mở cửa sổ Arranger (Trình tổ chức), sau đó chọn ứng dụng của bạn trong danh sách. Xcode hiển thị danh sách các bản lưu trữ cho dự án của bạn.

  2. Giữ phím Ctrl và nhấp vào một tệp lưu trữ để xem tệp đó trong Finder. Giữ phím Control và nhấp lại vào đó, rồi nhấp vào Show Package Contents (Hiện nội dung gói).

  3. Trong .xcarchive là một thư mục dSYMs chứa dSYMs được tạo trong quá trình lưu trữ của Xcode.

Tải dSYM lên

Crashlytics hỗ trợ nhiều cách để tải tệp dSYMs lên, theo cách tự động hoặc theo cách thủ công.

(Nên dùng) Tự động xử lý dSYM và tải tệp lên

Trong lần đầu thiết lập Crashlytics, rất có thể bạn đã định cấu hình hành vi tải lên tự động này cho ứng dụng của mình. Tuy nhiên, nếu không tải lên được tự động, hãy kiểm tra để đảm bảo rằng cấu hình của bạn là chính xác.

Tải tệp dSYM lên theo cách thủ công

Nếu không thể tự động tải lên, bạn có thể tải tệp dSYM lên theo cách thủ công bằng một trong các tuỳ chọn sau.

  • Cách 1: Sử dụng tuỳ chọn "Kéo và thả" dựa trên bảng điều khiển để tải tệp zip chứa tệp dSYM của bạn lên (chuyển đến bảng điều khiển của Firebase > Crashlytics > thẻ dSYMs).

  • Cách 2: Sử dụng tập lệnh upload-symbols mà bạn có thể gọi từ bất cứ đâu trong quy trình xây dựng để tải tệp dSYM lên theo cách thủ công. Để chạy tập lệnh upload-symbols, hãy sử dụng một trong các tuỳ chọn sau:

    • Cách A: Đưa dòng sau vào quy trình xây dựng của bạn:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • Cách B: Chạy tập lệnh ngay từ dòng lệnh:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    Để biết các ghi chú về cách sử dụng và hướng dẫn bổ sung về tập lệnh này, hãy chạy upload-symbols bằng tham số --help.