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

Theo mặc định, Firebase Crashlytics tự động xử lý các tệp biểu tượng gỡ lỗi (dSYM) để cung cấp cho bạn các 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 trong ứng dụng ban đầu, 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 tạo bản dựng của ứng dụng.

Rất tiếc, có một vài trường hợp có thể khiến bạn không thể tự động tải các tệp dSYM lên. Hướng dẫn này đưa ra 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.

Hãy đảm bảo rằng cấu hình của bạn cho tập lệnh chạy Crashlytics đã được cập nhật theo các yêu cầu mới bắt đầu từ Xcode 15. Nếu cấu hình không đượ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 bộ vị trí tệp hoàn chỉnh hơn. Để chạy tập lệnh 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 (Tạo giai đoạn), sau đó mở rộng mục Run Script (Chạy tập lệnh).

  2. Trong phần Input Files (Tệp đầu vào), hãy đảm bảo bạn có đường dẫn cho 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 dSYMs hay không

Đôi khi, các tệp dSYM bị thiếu vì đơn giản là Xcode không tạo ra chúng. Khi không tải lên được, 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 rồi 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 với tệp dSYM cho tất cả các loại bản dựng của bạn.

  6. Xây dựng lại ứng dụng của bạn.

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 sự cố vẫn tiếp diễn hoặc bạn gặp các lỗi khác, hãy thử xác định vị trí của dSYMtải chúng 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 mã nhận dạng duy nhất (UUID) của dSYM trên máy của bạn và tìm kiế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, bạn có thể tìm trong thư mục Products chứa .app của bạn (theo mặc định, thư mục Products nằm trong Derived Data). Nếu ứng dụng được phát hành chính thức, bạn cũng có thể tìm dSYM của ứng dụng đó trong thư mục .xcarchive trên ổ đĩa:

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

  2. Giữ phím Control và nhấp vào một tệp lưu trữ để xem trong Finder. Giữ phím Control và nhấp vào biểu tượng đó một lần nữa, sau đó 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 các dSYM được tạo trong quy trình lưu trữ của Xcode.

Tải dSYM lên

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

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

Khi thiết lập Crashlytics lần đầu, bạn rất có thể đã đị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ự động tải lên không thành công, hãy kiểm tra để đảm bảo rằng cấu hình của bạn chính xác.

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

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

  • Cách 1: Sử dụng tuỳ chọn "Kéo và thả" trong bảng điều khiển để tải tệp zip chứa các 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 kỳ vị trí nào trong quy trình xây dựng để tải các 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:

      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 trực tiếp từ thiết bị đầu cuối của bạn:

      /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 thông số --help.