Có quá nhiều tập tin biểu tượng Sau khi gửi thành công ứng dụng của tôi


199

Tôi đã tải xuống Xcode 6 GM và gửi hai ứng dụng Swift đến cửa hàng ứng dụng ngày hôm nay. Cả hai đều vượt qua tất cả xác minh trước khi tải lên và tất cả những thứ khác họ phải vượt qua và đã được gửi thành công. Nhưng sau đó tôi nhận được hai email từ Apple ... một cho mỗi chương trình và cả hai đều nói điều này:

Kính gửi nhà phát triển,

Chúng tôi đã phát hiện một hoặc nhiều vấn đề với giao hàng gần đây của bạn cho "xxxxxxxx" (tên ứng dụng của tôi đã bị xóa). Giao hàng của bạn đã thành công, nhưng bạn có thể muốn sửa các vấn đề sau trong lần giao hàng tiếp theo:

Quá nhiều tệp ký hiệu - Các ký hiệu này không có lát cắt tương ứng trong bất kỳ tệp nhị phân nào [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563 , 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-0400-38ED-BB5F-0C12333C0624 -11ED-BB5F-0C12. -4422-3222- C22B-CÔ-CÔ-CÔ CÔ C C C C C C C C C C C C C C C -3845-BAD5-F6E510 -B45-Bf-tb-tb-tb -8F7D-C49A36CD5C65.symbols]

Sau khi bạn khắc phục sự cố, bạn có thể sử dụng Xcode hoặc Trình tải ứng dụng để tải lên tệp nhị phân mới lên iTunes Connect.

Trân trọng,

Nhóm App Store

Tôi sẽ đoán rằng thực sự không có gì để làm với tôi hoặc các ứng dụng của tôi ... và đó chỉ là một sự châm biếm trong ngày nộp đơn ứng dụng Swift? Cả hai ứng dụng vẫn đang ở chế độ "Chờ phê duyệt". Tôi chắc chắn không thể nghĩ bất cứ điều gì tôi có thể thay đổi để làm cho những gì họ nói biến mất! Bất cứ ai khác gửi một ứng dụng Swift chưa và nhận được phản hồi đó? Nghĩ rằng tôi chỉ nên bỏ qua nó và chờ xem điều gì sẽ xảy ra?


Của tôi nói rằng và Invalid Swift Support. Bất cứ ý tưởng tại sao tôi có thể nhận được điều này? Tôi đang sử dụng Xcode mới nhất.
Dehli

vấn đề tương tự ở đây và ứng dụng của tôi không thể gửi để xem xét. Bởi vì vấn đề này. ai đã giải quyết?
yudun1989

1
vấn đề tương tự ở đây. dù sao cũng đã gửi để xem xét .. hãy xem điều gì xảy ra :)
dandoen

Cả hai Ứng dụng Swift của tôi vừa được chấp thuận vào App Store ... vì vậy tôi đoán tôi không lo lắng gì cả! Whew ... :)
Jim Barber

Câu trả lời:


128

Điều này xảy ra nếu bạn bao gồm thông tin gỡ lỗi của các thư viện của bạn với kho lưu trữ dự án nhưng không bao gồm nhị phân.

  1. Mở cửa sổ Sắp xếp trong Xcode
  2. Nhấp chuột phải vào kho lưu trữ có vấn đề này và chọn "Hiển thị trong Finder".
  3. Nhấp chuột phải vào tệp lưu trữ và chọn "Hiển thị nội dung gói"
  4. Trong thư mục "dSYMs", bạn sẽ thấy một số tệp. Nếu bạn chạy dwarfdumplệnh console trên các tệp này, bạn sẽ nhận được danh sách các chuỗi UUID:

    dwarfdump -u MyFile.dSYM

Tôi chắc chắn bạn sẽ tìm thấy một số UUID phù hợp từ email của Apple.

Để tránh cảnh báo này, bạn chỉ cần đưa vào kho lưu trữ của mình các dSYMtệp của ứng dụng chứ không phải các thư viện. Đối với điều này, bạn cần thay đổi cấu hình xây dựng của các thư viện để không tạo dSYMtệp. Chỉ cần tìm kiếm cho "định dạng thông tin gỡ lỗi" trong cấu hình và thay đổi nó từ DWARF with dSYM Fileđể DWARFchỉ.

Ví dụ: trong ảnh chụp màn hình bên dưới, bạn sẽ tìm thấy khung Stripe Stripe.

Ảnh chụp màn hình cài đặt dự án Xcode


13
dwarfdump -u *trong thư mục để xem tất cả các UUID
Jon

@Jon ooooh tại sao tôi nhìn thấy nó sau khi tôi làm từng cái một? :) dù sao cũng cảm ơn!
Serj Rubens

6
Việc xóa các tệp dSYM có nghĩa là bất kỳ sự cố nào liên quan đến bên thứ 3 sẽ không còn được biểu tượng hóa nữa trên Crashlytics (hoặc bất kỳ công cụ báo cáo sự cố nào khác)?
Eugenio

Tuy nhiên, nếu bạn sử dụng firebase \ Fabric, các tệp dsym nên được sử dụng để xem nhật ký sự cố trên trang web. Họ vẫn làm việc với sự thay đổi này?
Mattia Lancieri

88

Nếu bạn gặp phải vấn đề này trong khi sử dụng CocoaPods, hãy thêm vấn đề này vào Podfile của bạn:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
        end
    end
end

Nó sẽ đặt Định dạng thông tin gỡ lỗi thành DWARF chỉ cho tất cả các mục tiêu Pod của bạn (không phải mục tiêu ứng dụng chính)


@wzbozon Vâng, tôi yêu cầu kiểm tra lại. Bởi vì sau khi tôi làm điều đó, Crashlyticts ngừng hoạt động. Cảm ơn!
Cesar Rodriguez

Crashlytics nên tiếp tục hoạt động cho ứng dụng của bạn vì tập lệnh này chỉ thay đổi cài đặt xây dựng cho các nhóm.
Stan

1
Tôi đồng ý. Nhưng bạn sẽ không thấy báo cáo cho các nhóm. Người ta cũng có thể đặt DWARF với dSYM File chỉ cho một số nhóm, ví dụ như các nhóm phát triển.
Denis Kutlubaev

@Stan bạn đang nói rằng Crashlytics sẽ tiếp tục hoạt động? Cesar Rodriguez dường như nói rằng nó sẽ không hoạt động.
airowe

8
Điều này đã giải quyết nó cho tôi. Đừng quênpod install
đốt lửa

17

Nếu bạn đang sử dụng CocoaPods và ứng dụng của bạn được thiết lập chỉ sử dụng arm64 (tức là chỉ có arm64 trong thông tin dự án của bạn).

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

sau đó bạn có thể thử thêm tập lệnh sau vào Podfile của mình để giải quyết vấn đề này.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['ARCHS'] = 'arm64'
    end
  end
end

đặt tất cả các mục tiêu của dự án của bạn (không phải mục tiêu trong Pods) thành arm64

Cài đặt dự án Xcode

Tài liệu tham khảo vấn đề Github của CacaoPods


Có lẽ bạn nên bao gồm arm64e bây giờ, không?
shim

Tôi muốn bao gồm arm64 cho trình giả lập. Nó sẽ tự động bị xóa để phát hành bản dựng.
cybergen

13

Tôi gặp vấn đề này do dự án có kiến ​​trúc hợp lệ arm64 trong đó các mục tiêu của Cốc Cốc có kiến ​​trúc hợp lệ arm64, armv7 và armv7s .

Để kiểm tra mục tiêu nào có kiến ​​trúc hợp lệ, hãy làm theo các bước sau

  1. Trong Xcode -> Cửa sổ -> Trình tổ chức
  2. Chọn kho lưu trữ và tiết lộ trong Finder
  3. Trên tệp .xcarchive , Hiển thị nội dung gói
  4. Mở terminal và đưa đường dẫn của thư mục dSYMs .

  5. Nhập lệnh dwarfdump --uuid *và nó sẽ hiển thị danh sách các UUID có kiến ​​trúc hợp lệ.

UUID sẽ khớp với email cảnh báo của Apple

Dự án chính và vỏ ca cao nhắm mục tiêu có cùng kiến ​​trúc hợp lệ. Bằng cách này, nó sẽ giải quyết vấn đề.


Tôi nghĩ rằng nó giải thích tốt nhất những gì đang xảy ra. Tôi chỉ có những cảnh báo về các thư viện có kiến ​​trúc armv7 vì dự án của tôi chỉ được xây dựng cho arm64. Câu hỏi vẫn còn nếu tôi nên thêm armv7 vào dự án hoặc xóa nó khỏi Pods.
Ariel Bogdziewicz

6

Làm việc cho tôi bằng cách kích hoạt bitcode - nó đã bị tắt trước đó

Kích hoạt Bitcode - Có

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


1

Những điều trên đã giúp khắc phục sự cố, nhưng không thể giải quyết. Chúng tôi đã có dự án tại iOS 12 nhưng nhóm 10 - dẫn đến một loạt các tệp armv7. Cập nhật pod lên iOS 12 đã được giải quyết ngay lập tức.


0

Có cùng một vấn đề đã khắc phục nó bằng cách có cùng "Chung" => "Thông tin triển khai" => "Mục tiêu triển khai" cho tất cả các mục tiêu của tôi.


0

Trong Xcode, hãy tìm trong Cài đặt bản dựng cho các biểu tượng gỡ lỗi dải băng trong khi sao chép bản sao (COPY_PHASE_STRIP). Khi được bật, các biểu tượng gỡ lỗi được bỏ qua khỏi .app của bạn và được đặt vào tệp .dSYM. Nếu không .app của bạn chứa các ký hiệu này. (Theo mặc định, các biểu tượng gỡ lỗi bị xóa khỏi các bản dựng phát hành vì lý do che giấu. Có lẽ bạn không nên thay đổi cài đặt này cho cấu hình phát hành.)

Đảm bảo bạn kiểm tra tùy chọn này trong Cài đặt bản dựng dự án

https://possiblemobile.com/2015/03/symbolicating-your-ios-crash-reports/


0

Vấn đề đối với tôi là một dòng trong build.xcconfigtập tin của tôi . Tôi phải xóa

IPHONEOS_DEPLOYMENT_TARGET = 11.0

đã thiết lập dự án chỉ xây dựng cho arm64 (chứ không phải arm7). Theo các bước của @miOStôi có thể thấy rằng dự án pods đang xây dựng cho cả hai.


1
stackoverflow.com/a/49063850/3293172 iOS 11 đã bỏ hỗ trợ cho armv7 và armv7, do đó chỉ cần arm64 nếu bạn có mục tiêu triển khai> = iOS 11.0.
Ariel Bogdziewicz

-2

Đối với tôi mọi thứ rất đơn giản. Tôi có cùng một vấn đề và không biết phải làm gì trong một tuần.

Sau khi bạn gửi một ứng dụng lưu trữ, bạn sẽ thấy chứng chỉ để phân phối trong cửa sổ bật lên nhỏ. Có một hộp kiểm sau nó, mà bạn nên bỏ chọn. Sau đó, bạn sẽ gửi nó và nhận email về các tệp biểu tượng. NHƯNG nó không phải là vấn đề. Đó chỉ là một cảnh báo; không phải là một lỗi! Nếu bạn bỏ chọn hộp kiểm đó, ứng dụng của bạn sẽ được gửi chính xác. Tôi hy vọng nó có thể giúp bạn.

Ảnh chụp màn hình của hộp kiểm và cửa sổ bật lên:

Ảnh chụp màn hình của hộp kiểm và cửa sổ bật lên


Tôi thực sự hy vọng bạn sẽ chi tiết hơn .... Tôi không biết bạn đang nói về hộp kiểm hoặc cửa sổ bật lên nào. Có lẽ một ảnh chụp màn hình?
Louis Hong

gyazo.com/6d7bb2035979cb75253ba92a40e8d898 Tôi nghĩ rằng tôi thấy nó, đây là cái này
Louis Hong

5
Có, nhưng điều này sẽ loại bỏ tất cả các biểu tượng khỏi gói, và do đó bạn sẽ không nhận được báo cáo sự cố tượng trưng? (Họ thậm chí có cung cấp các báo cáo sự cố được tượng trưng trong các ứng dụng App Store ngay bây giờ với TestFlight không?)
Markus Rautopuro

30
Đây không phải là một giải pháp hợp lệ cho vấn đề. Điều này là tránh các triệu chứng, không giải quyết vấn đề. Xem câu trả lời của Mikhails để biết mô tả về cách bạn đang tải lên các biểu tượng mà bạn không cần. Câu trả lời này ngăn tải lên bất kỳ biểu tượng nào , do đó phá vỡ biểu tượng sự cố thông qua iTunesConnect
JConway

2
ĐỪNG làm điều đó, nếu bạn không thể phân tích ứng dụng của mình trên App Store để biết lỗi sự cố
user924
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.