2009-07-11 41 views
25

Tôi đang phát triển một ứng dụng iPhone và thực hiện phân phối đặc biệt để thử nghiệm beta. Người dùng của tôi đang gửi cho tôi nhật ký sự cố cho biết điều này:Nhật ký sự cố iPhone cho biết "Phiên bản: ???"

Identifier:  MyAppName 
Version:   ??? (???) 
Code Type:  ARM (Native) 

Tôi không thể hiểu cách thay thế các dấu hỏi đó bằng một số phiên bản thực. Tôi đã cấu hình Info.plist của tôi để bao gồm một CFBundleVersion và một CFBundleShortVersionString, nhưng điều đó không giúp ... các bản ghi sự cố vẫn chỉ chứa các dấu chấm hỏi thay vì số phiên bản mà tôi mong đợi.

Làm cách nào để đặt phiên bản của tôi để phiên bản đó sẽ hiển thị trong nhật ký sự cố?

EDIT Rõ ràng, do lỗi có thể xảy ra trong iPhone CrashReporter, không có cách nào để đặt "Phiên bản" đúng cách. Nhưng có cách giải quyết nào không? Một số cách khác để chèn số phiên bản (ví dụ: số bản dựng hoặc số bản sửa đổi SCM) trong siêu dữ liệu nhật ký sự cố?

+1

Hey Dan - có vẻ như bạn đang làm tất cả mọi thứ đúng. Giá trị trong Info.plist của bạn phải là số phiên bản duy nhất tôi nghĩ ... Có thể đây là lỗi? –

+1

tất cả nhật ký sự cố tôi thấy trên điện thoại của mình, từ một số ứng dụng phát hành, tất cả đều có Phiên bản: ??? (???), vì vậy tôi nghĩ rằng đây chỉ là nó như thế nào. –

Trả lời

28

Phương pháp đơn giản nhất là lưu UDID của tất cả các tệp nhị phân bạn phân phối và so sánh chúng với UDID trong vùng đổ vỡ. Các UDID khác nhau đối với mỗi bản dựng mà bạn tạo ra.

Để lấy UDID:

$ dwarfdump -u /path/to/MyApp.app/MyApp 
UUID: 864F3D54-F165-3356-3292-2C9C48E97C55 (armv6) /path/to/MyApp.app/MyApp 

Và so sánh nó với crashlog:

Binary Images: 
    0x1000 - 0x5ffff +MyApp armv6 <864F3D54F165335632922C9C48E97C55> /var/mobile/Applications/5FB3933B-348E-42D7-B99F-76DE284D2148/MyApp.app/MyApp 
+0

Tốt nhất của một tình huống xấu, tôi đoán. –

+0

Vâng ... hệ thống với số phiên bản thực sự thuận tiện khi nó hoạt động. – rpetrich

+2

Rất hữu ích, cảm ơn @rpetrich, nếu điều đó có thể giúp một số người, tìm kiếm trong tất cả lưu trữ Xcode 4: 'find ~/Library/Developer/Xcode/Archives/-name -print0 | xargs -0 dwarfdump -u | grep '. Tôi nghĩ rằng cùng có thể đạt được bằng cách sử dụng 'mdfind', nhưng có vẻ như spotlight không lập chỉ mục nội dung tập tin' .xcarchive'. –

3

Điều này có vẻ là trường hợp đối với tất cả các ứng dụng iPhone, bao gồm các ứng dụng từ Apple. Bạn có thể xem qua tất cả các ứng dụng iPhone log tai nạn cho các thiết bị của bạn trong Console:

FILES/~/Library/Logs/CrashReporter/MobileDevice/...

Mọi thứ trong danh sách hiển thị lên với các phiên bản chưa được biết đối với tôi, trừ MobileSafari, trong đó có thông tin hơi khác nhau:

OS Version:   iPhone OS 2.2.1 (5H11) 
Date:    2009-02-15 02:19:06 -0600 

Tất cả các ứng dụng khác, bao gồm Lịch & ứng dụng mail của Apple, hiện lên với dấu hỏi cho số phiên bản của họ.

Dường như các nhà phát triển khác đã nhận thấy the same thing. Nó có lẽ là một lỗi trong chương trình CrashReporter của iPhone.

+0

Cảm ơn. Có bất kỳ công việc xung quanh? Một số cách khác để chèn số phiên bản (ví dụ: số bản dựng hoặc số sửa đổi SCM) trong siêu dữ liệu nhật ký sự cố? –

+0

Không phải là tôi biết, thật không may.Tôi đã ra khỏi giải đấu của tôi về công cụ này :) –

2

Để thử nghiệm adhoc và beta, chỉ cần thay đổi số nhận dạng của bạn. MyAppNameV1.0b36 thay vì MyAppName Rõ ràng điều này sẽ không hoạt động cho phiên bản App Store của bạn, nhưng nó sẽ giúp bạn vượt qua thử nghiệm beta.

Lưu ý rằng điều này có thể yêu cầu một cấu hình quảng cáo ký tự đại diện, nhưng chúng có thể dễ dàng được thực hiện thông qua cổng thông tin dành cho nhà phát triển.

+0

Tôi không thể có được cấu hình quảng cáo ký tự đại diện đặc biệt để làm việc, nhưng cổng thông tin nhà phát triển luôn đòi hỏi rất nhiều fidgeting. –

Các vấn đề liên quan