Nhận báo cáo sự cố có thể đọc đượ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ố đã gỡ rối và dễ đọc. Bạn thường định cấu hình hành vi này trong quá trình thiết lập ban đầu của Crashlytics trong ứng dụng, cụ thể là bằng cách thêm tập lệnh chạy tự động tải các tệp dSYM lên trong giai đoạn xây dựng của ứng dụng.

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

Đảm bảo Xcode có thể tự động xử lý dSYM và tải các 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.

Đả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 các yêu cầu mới bắt đầu từ Xcode 15. Nếu cấu hình của bạn chưa được 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 tập hợp 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 đã thiết lập như sau:

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

  2. Trong mục Tệp đầu vào, 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ó đang tạo dSYM hay không

Thông thường, các tệp dSYM sẽ bị thiếu vì Xcode đơn giản là không tạo các tệp đó. Khi không tải được lên, Crashlytics sẽ hiển thị cảnh báo "Thiếu dSYM" trong bảng điều khiển 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 Xcode đang tạo dSYM chính xác cho mọi bản dựng:

  1. Mở dự án trong Xcode, sau đó chọn tệp dự án trong Trình điều hướng Xcode.

  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 (DWARF có tệp dSYM) cho tất cả các loại bản dựng.

  6. Tạo lại ứng dụng.

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

Tìm dSYM trên máy cục bộ

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

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

Sau khi tìm thấy dSYM, hãy tải tệp này lên Crashlytics theo cách thủ công. Nếu lệnh mdfind không trả về kết quả nào, 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 công khai, 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ổ Trình tổ chức, sau đó chọn ứng dụng của bạn trong danh sách. Xcode sẽ hiển thị danh sách tệp lưu trữ cho dự án của bạn.

  2. Nhấn tổ hợp phím Ctrl + nhấp vào một tệp lưu trữ để xem tệp đó trong Finder. Nhấp chuột phải vào gói đó một lần nữa, 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 dSYM chứa các dSYM đượ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 dSYM lên, tự động hoặc thủ công.

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

Khi thiết lập Crashlytics ban đầu, 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 tính năng tải lên tự động không hoạt động, hãy kiểm tra để đảm bảo 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 tải lên được theo cách tự động, 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ả" trên bảng điều khiển để tải tệp zip lên chứa các tệp dSYM (chuyển đến bảng điều khiển Firebase > Crashlytics > thẻ dSYM).

  • Cách 2: Sử dụng tập lệnh upload-symbols mà bạn có thể gọi từ bất kỳ đâu trong quá 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: Thêm dòng sau vào quy trình xây dựng:

      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ừ thiết bị đầu cuối:

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

    Để biết 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.