Crashlytics không gửi báo cáo sự cố từ iPhone


85

Tôi đã thiết lập Crashlytics trong một ứng dụng iOS của mình và cài đặt ứng dụng này trên thiết bị thực. Bảng điều khiển Crashlytics của tôi đang hiển thị điều đó, tôi đã thêm ứng dụng thành công. Tuy nhiên, nó không gửi báo cáo sự cố. Tốc độ internet của tôi không quá tốt. Nhưng tôi có thể kiểm tra email của mình từ thiết bị này. Ai có thể đoán, vấn đề là ở đâu?


5
Tôi đang gặp vấn đề tương tự với dịch vụ Crashlytics. Báo cáo sự cố từ thiết bị không bao giờ được gửi (theo kinh nghiệm của tôi) - chỉ từ trình mô phỏng. Tôi đã kết thúc bằng cách sử dụng báo cáo sự cố Crittercism và xử lý lỗi.
Sam Spencer

Điều này cũng xảy ra với tôi. Hãy thử ứng dụng của bạn với một thiết bị khác không phải thiết bị phát triển thực tế, bằng cách này, bạn có thể nhận được báo cáo sự cố.
Samet DEDE,

Có, tôi đang sử dụng thiết bị phát triển của mình. Nó đang làm cho vấn đề?
Farhad rubel

1
Nếu không có mô tả thiết lập hoàn chỉnh hoặc dự án thử nghiệm thì điều này là không thể trả lời. Bạn nên liên hệ với bộ phận hỗ trợ crashlytics. Phỏng đoán hoang đường không giúp được gì.
Kerni

3
Tôi rất ngạc nhiên khi ai đó từ Crashlytics đã nhìn thấy bài đăng này của tôi trên StackOverflow và anh ấy đã liên hệ với tôi qua email; Anh ấy đang giúp tôi giải quyết vấn đề này. Hãy xem điều gì sẽ xảy ra.
Farhad rubel

Câu trả lời:


81

Trình gỡ lỗi Xcode KHÔNG cho phép Crashlytics xử lý báo cáo sự cố. Vâng, điều đó có vẻ kỳ lạ ngay cả với tôi khi tôi đọc lần đầu tiên nhưng đó là một sự thật ( Nguồn ). Đó là lý do tại sao chúng tôi không bao giờ thấy báo cáo sự cố Khi:
- chạy ứng dụng trong Trình mô phỏng
- chạy ứng dụng trên iDevice bằng cách trực tiếp tạo và chạy từ Xcode với trình gỡ lỗi được bật.

Để đảm bảo sự cố được báo cáo trong quá trình thử nghiệm của bạn ( được sao chép từ trang hỗ trợ Crashlytics ):
1. Khởi chạy trình mô phỏng
2. Nhấn dừng
3. Khởi chạy ứng dụng của bạn và buộc gặp sự cố
4. Khởi chạy lại ứng dụng từ trình mô phỏng
5. Xem báo cáo sự cố trong bảng điều khiển web.

BIÊN TẬP:

Đã thêm một tài liệu tham khảo; Crashlytics cũng cung cấp một bài viết ngắn về cách nhanh chóng để buộc một sự cố .


6
Điều này đã giúp tôi. Tôi cũng đã phát hiện ra điều đó trong một số trường hợp. Crashlytics sẽ không gửi báo cáo sự cố trừ khi ứng dụng được mở lại. Để nhắc lại: Người dùng gặp sự cố. Người dùng mở lại ứng dụng. Crashlytics gửi báo cáo sự cố trước đó.
tambykojak

1
@tambykojak, điều này có thể xảy ra do sự cố iOS khá dễ bay hơi trong hầu hết các trường hợp và cách an toàn hơn là gửi báo cáo sự cố trong lần tải ứng dụng tiếp theo so với gửi ngay lập tức. Nhiều công cụ Báo cáo sự cố sử dụng mô hình này trên iOS và các trình xử lý sự cố không phải VM khác.
pixelknitter

2
Cảm ơn bạn. Đây phải được đánh dấu là câu trả lời đúng :)
iMemon

Tôi có cần tải lên bất kỳ dsyms nào trong trường hợp này không? Nếu vậy tôi có thể tìm chúng ở đâu?
SoliQuiD

liên kết đã chết.
luky

66

Tôi đến muộn nhưng hãy làm việc 100%

Thực hiện một số thay đổi trong cài đặt xây dựng dự án như trong hình ảnh dưới đây

nhập mô tả hình ảnh ở đây

và làm theo các hướng dẫn sau.


Ngay cả sau khi tắt Bitcode, thỉnh thoảng tôi vẫn gặp lỗi dSYMS và 100% thời gian khi gỡ lỗi bằng trình mô phỏng. Điều này đã sửa nó. Cảm ơn bạn.
user3344977

Bằng cách thay đổi cài đặt này, tôi có thể thấy sự cố trong nền tảng firebase
Kwnstantinos Nikoloutsos

20

Lý do chính mà mọi trình báo cáo sự cố sẽ không hoạt động trên iOS là do sự can thiệp từ các trình báo cáo sự cố khác nhau. Tuy nhiên, với Crashlytics cụ thể, có thể có điều gì đó cụ thể đối với chúng khiến báo cáo sự cố không được báo cáo.

Trình gỡ lỗi Xcode KHÔNG cho phép Bất kỳ Trình báo cáo sự cố nào xử lý báo cáo sự cố. Điều này là do XCode ghi đè bất kỳ móc nào vào lệnh gọi lại xử lý sự cố. Điều này chỉ xảy ra khi:

  • đang chạy ứng dụng trong Trình mô phỏng (có bật trình gỡ lỗi)
  • chạy ứng dụng trên iDevice bằng cách trực tiếp xây dựng và chạy từ Xcode khi bật trình gỡ lỗi.

Để đảm bảo rằng sự cố được báo cáo trong quá trình thử nghiệm của bạn ( http://support.crashlytics.com/knowledgebase/articles/92523-why-can-ti-have-xcode-connected- ):

  1. Khởi chạy trình mô phỏng
  2. Nhấn dừng
  3. Khởi chạy ứng dụng của bạn và buộc phải gặp sự cố
  4. Khởi chạy lại ứng dụng từ trình mô phỏng
  5. Xem báo cáo sự cố trong trang tổng quan web.

Mặc dù video quá cũ vẫn còn phù hợp nhưng đây là video hướng dẫn các bước ở trên (ví dụ từ Crittercism): https://www.youtube.com/watch?v=sU6Su3PBFH4


1
Crashlytics tự vô hiệu hóa khi phát hiện có trình gỡ lỗi được đính kèm. Không phải vì nó sẽ không hoạt động, mà bởi vì nó sẽ ngăn trình gỡ lỗi hoạt động chính xác. Crashlytics sử dụng các cơ chế tương tự mà chính trình gỡ lỗi sử dụng và sẽ thực sự khó chịu nếu SDK làm rối loạn quy trình gỡ lỗi thông thường. Để tham khảo, tôi đã viết hầu hết Crashlytics SDK.
Mattie,

8

Đối với tôi, vấn đề là thiết bị được kết nối với máy Mac của tôi :) Từ nguồn này :

Ngoài ra, nếu bạn đã kết nối thiết bị của mình với máy Mac, trình gỡ lỗi của XCode cũng sẽ bước vào. Vì vậy, chỉ cần ngắt kết nối thiết bị trước khi thử nghiệm :)


7

Tôi đã tìm thấy giải pháp bằng cách sử dụng các bước sau
1. Đi tới Chỉnh sửa lược đồ 2. Chạy -> Thông tin 3. Thay đổi cấu hình bản dựng để phát hành. Bây giờ chạy ứng dụng nó sụp đổ. Bạn sẽ nhận được thư.


6

Gần đây chúng tôi đã gặp phải vấn đề này và tôi thấy rằng ở đâu đó trong quá trình tập lệnh xây dựng đã bị xóa. Thêm lại nó vào với cách sau đã khắc phục sự cố cho chúng tôi:
./Crashlytics.framework/run <your_api_key> <build_secret>

Lưu ý: Khi sử dụng Cocoapods, bạn sẽ muốn chúng tôi những điều sau thay vì ở trên ( nguồn ): ./Pods/CrashlyticsFramework/Crashlytics.framework/run

Thêm tập lệnh xây dựng:

  1. Để thêm Giai đoạn Xây dựng Tập lệnh Chạy trong Xcode 6, hãy chọn mục tiêu ứng dụng trong dự án của bạn, sau đó chọn "Giai đoạn Xây dựng".
  2. Nhấp vào biểu tượng "dấu cộng" nhỏ và chọn "New Run Script Build Phase".
  3. Bây giờ bạn sẽ thấy phần Run Script ở giữa các tùy chọn Build Phase của bạn, như được hiển thị ở trên.
  4. Bên trong phần nội dung của Giai đoạn Xây dựng Tập lệnh Chạy, hãy dán tập lệnh vào. '

Trích dẫn trên đến từ hướng dẫn trực quan của Crashlytics , được tham khảo trong bài đăng này .

Lưu ý: Ban đầu tôi đã đăng nguyên văn câu trả lời này cho mã lỗi Crashlytics: 202 khi Gửi tệp .


Điều này dường như đã giúp tôi.
Chris Prince

1
Tôi đã sử dụng vải trước đây để tích hợp twitter bây giờ tôi muốn crashlytics tôi cũng đã thêm framework và tôi đã làm theo tất cả các hướng dẫn nhưng tôi không nhận được bất kỳ báo cáo sự cố nào cho bảng điều khiển của mình, vui lòng giúp tôi
RameshIos

@iOS_Ramesh Tôi rất muốn cố gắng giúp bạn, nhưng nếu không biết thêm thì sẽ rất khó. Để làm điều này, bạn nên mở một câu hỏi mới nêu rõ bạn đang ở đâu (bước bạn đã thực hiện để tích hợp, bất kỳ đoạn mã thích hợp nào và bất kỳ phản hồi nào bạn nhận được từ Crashlytics hoặc bảng điều khiển).
James Nelson

Tôi đã đăng một câu hỏi mới ... stackoverflow.com/questions/30215049/…
RameshIos

1
Cảm ơn vì gợi ý. Chúng tôi đã kiểm tra ["Release" = "$ {CONFIGURATION}"] trong Run Script và chúng tôi đã đổi tên cấu hình Bản phát hành của mình.
Marián Černý

4

Từ trang RayWenderlich:

Bạn sẽ không nhận được bất kỳ báo cáo sự cố nào nếu Xcode chặn sự kiện sự cố! Để làm cho tất cả các ví dụ dưới đây hoạt động, bạn phải xây dựng và chạy ứng dụng, sau đó nhấp vào nút dừng trên Xcode. Bằng cách này, bạn sẽ có phiên bản mới nhất được cài đặt trên thiết bị. Sau khi hoàn tất, bạn có thể khởi chạy ứng dụng trên chính thiết bị và sau đó làm hỏng tất cả những gì bạn muốn! Tất cả sự cố trên thiết bị iOS của bạn sẽ được ghi lại và gửi đến thành phần máy chủ của dịch vụ mà bạn đã tích hợp vào ứng dụng. Báo cáo sự cố thường được gửi đến máy chủ vào lần tiếp theo bạn khởi động ứng dụng, vì vậy các bước cần làm theo để tạo báo cáo sự cố trên máy chủ như sau: Xây dựng và chạy trên Xcode. Nhấn nút dừng. Chạy ứng dụng trên thiết bị iOS của bạn. Làm cho ứng dụng gặp sự cố. Chạy lại ứng dụng.


3

Crashlytics phù hợp với tôi cho đến bây giờ. Tôi không biết tại sao nhưng bây giờ nó không hoạt động.

Bạn nên bật chế độ gỡ lỗi bằng cách

[Crashlytics sharedInstance].debugMode = YES;

Vấn đề của tôi là ở đây Mã lỗi Crashlytics: 202 khi Gửi tệp :(


3

Hãy chắc chắn rằng bạn không ép buộc sự cố quá sớm.

Đặt [Crashlytics sharedInstance].debugModethành YES;

Trông nom

Crashlytics] Settings loaded

trên nhật ký bảng điều khiển Xcode.

Sau đó, buộc sự cố và khởi động lại ứng dụng, và sự cố sẽ được báo cáo ngay bây giờ.


3

Tôi đã gặp sự cố tương tự khi thử mã lỗi thử nghiệm.

Crashlytics.sharedInstance().crash()

Tôi đang chạy ứng dụng của mình từ một thiết bị mà không có Xcode và sự cố sẽ không hiển thị trên Crashlytics Dashboard. Điều hiệu quả với tôi là mẹo sau từ trang web Crashlytics:

  • Đảm bảo khởi chạy ứng dụng sau khi gặp sự cố để có thể tải lên ứng dụng gặp sự cố

Tôi đã nhận xét về cuộc gọi crash () ở trên và chạy lại ứng dụng. Sau đó, sự cố hiển thị trong Trang tổng quan.


2

Điều này dành cho xcode 9, từ crashlytics 3.4.0 BƯỚC 1 BƯỚC 2

Sau khi thực hiện, hãy kiên nhẫn và đợi trong vài phút.


1

Bạn đã thử chạy [[Crashlytics sharedInstance] crash]trên một thiết bị và xem điều đó có được báo cáo không? Có một số lý do tại sao Crashlytics có thể không hoạt động, bao gồm các phóng viên sự cố khác, v.v.


Không, tôi đang sử dụng int * x = NULL; * x = 42; mã để xem báo cáo sự cố. Hơn nữa, ứng dụng của tôi cũng gặp sự cố đối với mô hình dữ liệu cốt lõi khác nhau.
farhad rubel

1

Nếu bạn không tải lên tệp dSYM, Crashlytics sẽ không hiển thị sự cố của bạn mặc dù đã tải lên thành công báo cáo.

Bạn có thể gặp sự cố này, nếu bạn đã thiết lập tập lệnh xây dựng của mình để chỉ chạy trên máy chủ CI của mình. Sau đó, nếu bạn đã sao chép ứng dụng vào điện thoại của mình qua xcode và bạn chạy ứng dụng đó mà không được đính kèm với trình gỡ lỗi, báo cáo sẽ được tải lên nhưng bị bỏ qua do thiếu tệp dSYM.



1

Đôi khi, phải mất một thời gian để nhật ký hiển thị. Tôi có thể tìm thấy chúng sau 15-20 phút


0

Một trong những vấn đề mà tôi cảm thấy rằng trong Giai đoạn Chạy Script, đó phải là Giai đoạn Chạy Script riêng cho CrashLytics. Tập lệnh chạy khi nào

./Fabric.framework/run

Với một số tập lệnh khác của tôi, mọi thứ đều ổn, báo cáo hiển thị nhật ký CrashLytics đã được gửi, nhưng không có gì trong giao diện web.

Khi tôi thêm một giai đoạn kịch bản Run khác chỉ với chạy vải, nó xuất hiện giống như một phép thuật :)

Lần thử đầu tiên của tôi là với cocoapods, nhưng điều đó không hiệu quả. Khi tôi thêm thủ công tất cả khuôn khổ và một giai đoạn tập lệnh chạy riêng đã hoạt động.


-1

Điều này đã làm việc cho tôi,

Nếu bạn đang thử nghiệm trên iDevice, chỉ cần rút iDevice với Xcode của bạn và chạy ứng dụng của bạn. Bây giờ, nếu bị lỗi, nó sẽ được cập nhật trên bảng điều khiển.


-3

Tôi đã giải quyết bằng cách bỏ chọn tùy chọn "Chỉ chạy tập lệnh khi cài đặt" trong tập lệnh Chạy (một cho Fabric (crashlytics))

nhập mô tả hình ảnh ở đây


Đó chỉ là tập lệnh tải các biểu tượng lên Crashlytics; Làm thế nào mà giải quyết vấn đề báo cáo sự cố không được gửi? Bạn cần thực hiện những bước nào để tránh sử dụng Crashlytics khi các biểu tượng chưa được tải lên? Câu trả lời này là sai lầm và hoàn toàn sai.
Droppy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.