앱을 성공적으로 제출 한 후“너무 많은 심볼 파일”


201

Xcode 6 GM을 다운로드하고 오늘 두 개의 Swift 앱을 앱 스토어에 제출했습니다. 둘 다 모든 사전 업로드 확인과 통과해야하는 다른 모든 항목을 통과하고 성공적으로 제출되었습니다. 그러나 나는 애플로부터 두 개의 이메일을 받았습니다 ... 각 프로그램마다 하나씩 그리고 그들은 모두 이렇게 말했습니다.

개발자 님,

최근에 "xxxxxxxx"(내 앱 이름이 제거됨)에 대한 하나 이상의 문제가 발견되었습니다. 배송이 완료되었지만 다음 배송시 다음 문제를 해결하고자 할 수 있습니다.

심볼 파일이 너무 많음-이 심볼에는 바이너리에 해당 슬라이스가 없습니다 [1431D977-72BC-308F-AB71-71529F25400B. 기호, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563E-340C-B549-55A5014A68BA. , 678BF06F-0C3D-3A09-BFBF-699C7079FECD. 기호, 90907DDB-0400-38ED-BB5F-0C12333C0624. 기호, 93B79949-5757-374A-97B9-825AE1A61B7D.symbols, ABA05220FFF -4422-32B8-8C40-CF9B45A2CCC6. 기호, B0CC9F7D-C542-3E18-A518-B28B7ECABE80. 기호, BF6A4C3B-6FA5-3C51-8404-19C2F132458D.symbols, C9D6E3978E -3845-BAD5-F6E51045D396. 기호, D4967AA3-8FB0-3712-B0DE-7F4144AF8F4B. 기호, D813B314-AD37-31D4-B675-442052994495.symbols, DF42A13F-08D8-3E71-B221-CA357 -8F7D-C49A36CD5C65. 기호]

문제를 해결 한 후 Xcode 또는 Application Loader를 사용하여 새로운 바이너리를 iTunes Connect에 업로드 할 수 있습니다.

문안 인사,

App Store 팀

나는 나와 나와 내 앱과는 전혀 관련이 없다고 생각할 것입니다 ... 그것은 Swift 앱 제출 한 날의 기발한 일입니까? 두 앱 모두 여전히 "승인 대기 중"모드에 있습니다. 나는 그들이 말한 것을 없애기 위해 내가 바꿀 수있는 것을 전혀 생각할 수 없다! 다른 사람이 아직 Swift 앱을 제출하고 응답을 얻습니까? 그냥 무시하고 어떻게 될지 기다려야한다고 생각하십니까?


내 것이 말했다 Invalid Swift Support. 왜 내가 이것을 얻을 수 있을지 아십니까? 최신 Xcode를 사용하고 있습니다.
Dehli

여기에 동일한 문제가 있으며이 문제로 인해 내 앱에서 검토를 제출 할 수 없습니다.
yudun1989

1
여기에 같은 문제가 있습니다. 어쨌든 검토를 위해 제출 ..하자가 : 무슨 일이 일어 나는지
dandoen

내 Swift 앱이 모두 App Store에 승인되었습니다. Whew ... :)
Jim Barber

답변:


128

이는 프로젝트 아카이브에 라이브러리의 디버그 정보를 포함하지만 바이너리는 포함하지 않은 경우에 발생합니다.

  1. Xcode에서 Organizer 창을 엽니 다
  2. 이 문제가있는 아카이브를 마우스 오른쪽 버튼으로 클릭하고 "파인더에 표시"를 선택하십시오.
  3. 아카이브 파일을 마우스 오른쪽 버튼으로 클릭하고 "패키지 내용 표시"를 선택하십시오.
  4. "dSYMs"폴더에는 여러 파일이 있습니다. 이 파일 에서 dwarfdump콘솔 명령 을 실행하면 UUID 문자열 목록이 표시됩니다.

    dwarfdump -u MyFile.dSYM

애플 이메일에서 일치하는 UUID를 찾을 수있을 것입니다.

이 경고를 피하려면 dSYM라이브러리가 아닌 애플리케이션 파일 만 아카이브에 포함시켜야합니다 . 이를 위해 dSYM파일을 생성하지 않도록 라이브러리의 빌드 구성을 변경해야 합니다. 그냥 구성에서 "디버그 정보 형식"에 대한 검색에서 변경 DWARF with dSYM File하는 DWARF경우에만.

예를 들어 아래 스크린 샷에는 Stripe iOS 프레임 워크가 있습니다.

Xcode 프로젝트 설정 스크린 샷


13
dwarfdump -u *폴더에 모든 UUID가 표시됨
Jon

@ Jon ooooh 왜 내가 하나씩 만든 후에 그것을 보나요? :) 어쨌든 감사합니다!
Serj Rubens

6
dSYM 파일을 제거하면 Crashlytics (또는 기타 충돌보고 도구)에서 타사와 관련된 충돌이 더 이상 상징화되지 않습니까?
유게 니오

그러나 firebase \ fabric을 사용하는 경우 사이트에서 충돌 로그를 보는 데 dsym 파일을 사용해야합니다. 그들은 여전히이 변화를 다루고 있습니까?
Mattia Lancieri

91

CocoaPods를 사용하는 동안이 문제가 발생하면이를 Podfile에 추가하십시오.

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

모든 Pod 대상에 대해서만 디버그 정보 형식을 DWARF로 설정합니다 (기본 앱 대상은 아님).


@ wzbozon 예, 다시 확인을 부탁드립니다. 내가 한 후에 Crashlyticts가 작동을 멈 췄기 때문입니다. 감사!
Cesar Rodriguez

이 스크립트는 포드의 빌드 설정 만 변경하므로 Crashlytics는 앱에서 계속 작동합니다.
Stan

1
나는 동의한다. 그러나 포드에 대한 보고서는 표시되지 않습니다. 개발 포드와 같은 일부 포드에 대해서만 dSYM 파일을 사용하여 DWARF를 설정할 수도 있습니다.
Denis Kutlubaev

@Stan Crashlytics가 계속 작동 할 것이라고 말씀하십니까? 세자 로드리게스는 작동하지 않을 것 같습니다.
airowe

8
이것은 나를 위해 해결했습니다. 잊지 마세요pod install
firebear

18

CocoaPods를 사용 중이고 앱이 arm64 만 사용하도록 설정된 경우 (예 : 프로젝트의 info.plist에 arm64 만 있음)

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

이 문제를 해결하려면 Podfile에 다음 스크립트를 추가하십시오.

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

모든 프로젝트의 대상 (팟의 대상이 아님)을 arm64로만 설정하십시오.

Xcode 프로젝트 설정

CocoaPods Github 문제 참조


아마 당신도 지금 arm64e를 포함시켜야합니까?
shim

시뮬레이터 용 arm64를 포함 시켰습니다. 릴리스 빌드에서는 자동으로 제거됩니다.
사이버 젠

13

CocoaPods 대상에 유효한 아키텍처 arm64, armv7 및 armv7s 가있는 프로젝트에 유효한 아키텍처 arm64 가 있기 때문에이 문제 가 있습니다 .

어떤 대상에 어떤 유효한 아키텍처가 있는지 확인하려면 다음 단계를 수행하십시오.

  1. Xcode에서-> 창-> 오거나이저
  2. 보관함을 선택하고 Finder에 표시
  3. .xcarchive 파일, 쇼 패키지 내용
  4. 터미널을 열고 dSYM 폴더의 경로를 지정하십시오.

  5. 명령을 입력 dwarfdump --uuid *하면 유효한 아키텍처가있는 UUID 목록이 표시됩니다.

UUID는 Apple의 경고 이메일과 일치합니다

기본 프로젝트와 코코아 포드 대상은 동일한 유효한 아키텍처를 가지고 있다고 가정합니다. 이렇게하면 문제가 해결됩니다.


나는 그것이 무슨 일이 일어나고 있는지 가장 잘 설명한다고 생각합니다. 내 프로젝트는 arm64 전용으로 빌드되었으므로 armv7 아키텍처의 라이브러리에 대해서만 이러한 경고가 표시됩니다. 프로젝트에 armv7을 추가하거나 포드에서 제거해야하는지 질문이 남아 있습니다.
Ariel Bogdziewicz

6

비트 코드를 활성화하여 나를 위해 일했습니다.

비트 코드 사용-예

여기에 이미지 설명을 입력하십시오


1

위의 방법으로 문제를 해결했지만 해결하지 못했습니다. 우리는 iOS 12에서 프로젝트를했지만 포드 10은 많은 armv7 파일로 이어졌습니다. 포드를 iOS 12로 업데이트하면 즉시 해결되었습니다.


0

같은 문제로 모든 대상에 대해 "일반"=> "배포 정보"=> "배포 대상"이 동일하게 수정되었습니다.


0

Xcode에서 "복사 중 스트립 디버그 기호"(COPY_PHASE_STRIP)의 빌드 설정을 확인하십시오. 활성화하면 디버그 기호가 .app에서 생략되고 .dSYM 파일에 배치됩니다. 그렇지 않으면 .app에 이러한 기호가 포함되어 있습니다. 기본적으로 디버그 기호는 난독 화로 인해 릴리스 빌드에서 제거됩니다. 릴리스 구성에 대해서는이 설정을 변경하지 않아야합니다.

프로젝트 빌드 설정 에서이 옵션을 확인하십시오

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


0

나를위한 문제는 내 build.xcconfig파일 의 줄이었습니다 . 나는 제거했다

IPHONEOS_DEPLOYMENT_TARGET = 11.0

arm64가 아닌 arm64 전용으로 프로젝트를 설정했습니다. 단계별 @miOS지침을 따르면 포드 프로젝트가 두 프로젝트 모두를 위해 빌드되고 있음을 알 수 있습니다.


1
stackoverflow.com/a/49063850/3293172 iOS 11에서 armv7 및 armv7에 대한 지원이 중단되었으므로 배포 대상> = iOS 11.0 인 경우 arm64 만 필요합니다.
Ariel Bogdziewicz

-3

나를 위해 모든 것이 매우 간단했습니다. 나는 같은 문제가 있었고 일주일 동안 무엇을 해야할지 몰랐습니다.

보관 된 응용 프로그램을 제출하면 작은 팝업 창에 배포 용 인증서가 표시됩니다. 그 뒤에는 확인란이 있으며 선택을 취소해야합니다. 그런 다음 제출하여 심볼 파일에 대한 이메일을받습니다. 그러나 문제가되지 않습니다. 경고 일뿐입니다. 오류가 아닙니다! 해당 확인란의 선택을 취소하면 앱이 올바르게 전송됩니다. 도움이 되길 바랍니다.

확인란과 팝업 스크린 샷 :

확인란과 팝업 스크린 샷


난 당신이 더 자세한 내용을 바랍니다 .... 나는 당신이 무슨 체크 박스 또는 팝업을 말하고 있는지 모른다. 스크린 샷일까요?
Louis Hong

gyazo.com/6d7bb2035979cb75253ba92a40e8d898 나는 그것을 본 것 같아요
Louis Hong

6
예, 그러나 패키지에서 모든 기호를 제거하므로 기호화 된 충돌 보고서를받지 않습니까? (TestFlight를 통해 App Store 앱에서 상징적 충돌 보고서를 제공합니까?)
Markus Rautopuro

31
이것은 문제에 대한 올바른 해결책이 아닙니다. 이것은 문제를 해결하지 않고 증상을 피하는 것입니다. 필요없는 심볼을 업로드하는 방법에 대한 설명은 Mikhails 답변을 참조하십시오. 업로드이 응답을 방지 어떤 따라서 iTunesConnect를 통해 충돌 symbolication을 깨는, 문자
JConway

3
그렇게하지 마십시오. 그렇지 않으면 App Store에서 충돌 오류가 있는지 앱을 분석 할 수 없습니다
user924
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.