"Zu viele Symboldateien" nach erfolgreicher Übermittlung meiner Apps


198

Ich habe Xcode 6 GM heruntergeladen und heute zwei Swift-Apps im App Store eingereicht. Beide haben alle Pre-Upload-Überprüfungen und alle anderen Dinge bestanden, die sie bestehen mussten, und wurden erfolgreich eingereicht. Aber dann bekam ich zwei E-Mails von Apple ... eine für jedes Programm und beide sagten Folgendes:

Lieber Entwickler,

Wir haben ein oder mehrere Probleme mit Ihrer letzten Lieferung für "xxxxxxxx" festgestellt (mein App-Name wurde entfernt). Ihre Lieferung war erfolgreich, aber Sie möchten möglicherweise die folgenden Probleme bei Ihrer nächsten Lieferung beheben:

Zu viele Symboldateien - Diese Symbole haben in keiner Binärdatei einen entsprechenden Slice [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563E-340C-B549-55A5014A68BAs , 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-0400-38ED-BB5F-0C12333C0624.symbols, 93B79949-5757-374A-97B9-825AE1A61B7B. -4422-32B8-8C40-CF9B45A2CCC6.symbols, B0CC9F7D-C542-3E18-A518-B28B7ECABE80.symbols, BF6A4C3B-6FA5-3C51-8404-19C2F132458D.symbols -3845-BAD5-F6E51045D396.Symbole, D4967AA3-8FB0-3712-B0DE-7F4144AF8F4B -8F7D-C49A36CD5C65.symbols]

Nachdem Sie die Probleme behoben haben, können Sie mit Xcode oder Application Loader eine neue Binärdatei in iTunes Connect hochladen.

Grüße,

Das App Store-Team

Ich werde vermuten, dass das wirklich nichts mit mir oder meinen Apps zu tun hat ... und es ist nur eine Eigenart der Swift-App-Einreichungen vom ersten Tag? Beide Apps befinden sich noch im Modus "Warten auf Genehmigung". Ich kann mir bestimmt nichts vorstellen, was ich ändern könnte, um das, was sie sagten, verschwinden zu lassen! Hat noch jemand eine Swift-App eingereicht und diese Antwort erhalten? Denken Sie, ich sollte es einfach ignorieren und abwarten, was passiert?


Meins hat das gesagt und Invalid Swift Support. Irgendeine Idee, warum ich das bekommen könnte? Ich verwende den neuesten Xcode.
Dehli

das gleiche Problem hier, und meine App kann nicht zur Überprüfung einreichen. Wegen dieses Problems. Jemand gelöst?
Yudun1989

1
das gleiche Problem hier. trotzdem zur Überprüfung eingereicht .. mal sehen was passiert :)
dandoen

Meine beiden Swift Apps wurden gerade für den App Store zugelassen ... also habe ich mir wohl um nichts Sorgen gemacht! Puh ... :)
Jim Barber

Antworten:


127

Dies geschieht, wenn Sie Debuginformationen Ihrer Bibliotheken in das Projektarchiv aufnehmen, jedoch keine Binärdateien.

  1. Öffnen Sie das Organizer-Fenster in Xcode
  2. Klicken Sie mit der rechten Maustaste auf ein Archiv mit diesem Problem und wählen Sie "Im Finder anzeigen".
  3. Klicken Sie mit der rechten Maustaste auf die Archivdatei und wählen Sie "Paketinhalt anzeigen".
  4. Im Ordner "dSYMs" sehen Sie mehrere Dateien. Wenn Sie den dwarfdumpKonsolenbefehl für diese Dateien ausführen, erhalten Sie eine Liste der UUID-Zeichenfolgen:

    dwarfdump -u MyFile.dSYM

Ich bin sicher, Sie werden einige passende UUIDs aus Apples E-Mail finden.

Um diese Warnung zu vermeiden, müssen Sie nur die dSYMDateien Ihrer Anwendung und nicht die Bibliotheken in Ihr Archiv aufnehmen . Dazu müssen Sie die Build-Konfiguration der Bibliotheken ändern, um keine dSYMDatei zu generieren . Suchen Sie einfach nach „Debug - Informationen Format“ in der Konfiguration und ändern Sie es von DWARF with dSYM Filezu DWARFnur.

Im folgenden Screenshot finden Sie beispielsweise das Stripe iOS-Framework.

Screenshot der Xcode-Projekteinstellungen


13
dwarfdump -u *in dem Ordner, um alle UUIDs zu sehen
Jon

@ Jon ooooh warum sehe ich es, nachdem ich eins nach dem anderen gemacht habe? :) trotzdem danke!
Serj Rubens

6
Bedeutet das Entfernen der dSYM-Dateien, dass Abstürze im Zusammenhang mit Drittanbietern in Crashlytics (oder einem anderen Tool zur Meldung von Abstürzen) nicht mehr symbolisiert werden?
Eugenio

Wenn Sie jedoch firebase \ Fabric verwenden, sollten die Dsym-Dateien zum Anzeigen der Absturzprotokolle auf der Site verwendet werden. Arbeiten sie noch mit dieser Änderung?
Mattia Lancieri

88

Wenn Sie dieses Problem bei der Verwendung von CocoaPods festgestellt haben, fügen Sie dies Ihrem Podfile hinzu:

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

Das Debug-Informationsformat wird nur für alle Pod-Ziele auf DWARF gesetzt (nicht für das Haupt-App-Ziel).


@wzbozon Ja, ich bitte nur um doppelte Überprüfung. Denn nachdem ich es getan habe, hören Crashlyticts auf zu arbeiten. Vielen Dank!
Cesar Rodriguez

Crashlytics sollte weiterhin für Ihre App funktionieren, da dieses Skript die Build-Einstellungen nur für Pods ändert.
Stan

1
Genau. Es werden jedoch keine Berichte für Pods angezeigt. Man könnte DWARF mit dSYM-Datei auch nur für einige Pods einstellen, zum Beispiel für Entwicklungs-Pods.
Denis Kutlubaev

@ Stan sagst du, dass Crashlytics weiterarbeiten wird? Cesar Rodriguez scheint zu sagen, dass es nicht funktionieren wird.
Airowe

8
Das hat es für mich gelöst. Vergiss nichtpod install
Feuerbär

17

Wenn Sie CocoaPods verwenden und Ihre App nur arm64 verwendet (dh in der info.plist Ihres Projekts befindet sich nur arm64).

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

Anschließend können Sie versuchen, das folgende Skript in Ihre Poddatei aufzunehmen, um dieses Problem zu beheben.

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

UND

Setzen Sie alle Ziele Ihrer Projekte (nicht die Ziele in Pods) auf arm64

Xcode-Projekteinstellungen

Referenz zu CocoaPods Github


Vermutlich sollten Sie jetzt auch arm64e einbinden, nein?
Shim

Ich würde arm64s für den Simulator einbinden. Es wird automatisch für Release-Builds entfernt.
Cybergen

13

Ich habe dieses Problem, weil das Projekt eine gültige Architektur arm64 hat, wobei die CocoaPods-Ziele gültige Architektur arm64, armv7 und armv7s haben .

Führen Sie die folgenden Schritte aus, um zu überprüfen, welches Ziel welche gültige Architektur hat

  1. In Xcode -> Fenster -> Organizer
  2. Wählen Sie das Archiv aus und zeigen Sie es im Finder an
  3. Zeigen Sie in der .xcarchive- Datei den Paketinhalt an
  4. Öffnen Sie das Terminal und geben Sie den Pfad des dSYMs- Ordners an.

  5. Geben Sie den Befehl ein dwarfdump --uuid *und es wird eine Liste der UUIDs mit gültigen Architekturen angezeigt.

Die UUID stimmt mit der Warn-E-Mail von Apple überein

Das Hauptprojekt und das Ziel der Kakaofrüchte setzen dieselbe gültige Architektur voraus. Auf diese Weise wird das Problem gelöst.


Ich denke, es erklärt am besten, was los ist. Ich habe diese Warnungen nur für Bibliotheken mit armv7-Architektur, da mein Projekt nur für arm64 erstellt wurde. Es bleibt die Frage, ob ich armv7 zum Projekt hinzufügen oder aus Pods entfernen soll.
Ariel Bogdziewicz

6

Hat für mich funktioniert, indem Bitcode aktiviert wurde - es war vorher ausgeschaltet

Bitcode aktivieren - Ja

Geben Sie hier die Bildbeschreibung ein


1

Das oben Genannte half bei der Fehlerbehebung, konnte aber nicht gelöst werden. Wir hatten ein Projekt unter iOS 12, aber Pods 10 - führten zu einer Reihe von armv7-Dateien. Das Aktualisieren des Pods auf iOS 12 wurde sofort behoben.


0

Hatte das gleiche Problem behoben, indem ich für alle meine Ziele das gleiche "Allgemein" => "Bereitstellungsinfo" => "Bereitstellungsziel" hatte.


0

Suchen Sie in Xcode in den Build-Einstellungen nach "Strip-Debug-Symbole während des Kopierens" (COPY_PHASE_STRIP). Wenn diese Option aktiviert ist, werden Debugsymbole in Ihrer .app-Datei weggelassen und in einer .dSYM-Datei abgelegt. Andernfalls enthält Ihre .app diese Symbole. (Standardmäßig werden Debug-Symbole aus Gründen der Verschleierung aus Release-Builds entfernt. Sie sollten diese Einstellung für die Release-Konfiguration wahrscheinlich nicht ändern.)

Stellen Sie sicher, dass Sie diese Option in den Projekterstellungseinstellungen aktivieren

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


0

Das Problem für mich war eine Zeile in meiner build.xcconfigDatei. Ich musste entfernen

IPHONEOS_DEPLOYMENT_TARGET = 11.0

Dadurch wurde das Projekt so eingestellt, dass es nur für arm64 (und nicht für arm7) erstellt wurde. Nach den Schritten von @miOSkonnte ich sehen, dass das Pods-Projekt für beide gebaut wurde.


1
stackoverflow.com/a/49063850/3293172 iOS 11 hat die Unterstützung für armv7 und armv7s eingestellt, sodass nur arm64 benötigt wird, wenn Sie ein Bereitstellungsziel> = iOS 11.0 haben.
Ariel Bogdziewicz

-2

Für mich war alles sehr einfach. Ich hatte das gleiche Problem und wusste eine Woche lang nicht, was ich tun sollte.

Nachdem Sie eine archivierte Anwendung eingereicht haben, wird das Zertifikat zur Verteilung in einem kleinen Popup-Fenster angezeigt. Danach befindet sich ein Kontrollkästchen, das Sie deaktivieren sollten. Danach senden Sie es ab und erhalten eine E-Mail über Symboldateien. ABER es ist kein Problem. Es ist nur eine Warnung; kein Fehler! Wenn Sie dieses Kontrollkästchen deaktivieren, wird Ihre App korrekt gesendet. Ich hoffe es kann dir helfen.

Screenshot des Kontrollkästchens und des Popups:

Screenshot des Kontrollkästchens und des Popups


Ich hoffe wirklich, dass Sie detaillierter sind ... Ich habe keine Ahnung, über welches Kontrollkästchen oder Popup Sie sprechen. Vielleicht ein Screenshot?
Louis Hong

gyazo.com/6d7bb2035979cb75253ba92a40e8d898 Ich glaube ich sehe es, es ist dieses
Louis Hong

5
Ja, aber dadurch werden alle Symbole aus dem Paket entfernt, und Sie erhalten daher keine symbolisierten Absturzberichte. (Stellen sie jetzt mit TestFlight sogar symbolisierte Absturzberichte in App Store-Apps bereit?)
Markus Rautopuro

30
Dies ist keine gültige Lösung für das Problem. Dadurch wird das Symptom vermieden und das Problem nicht behoben. In der Antwort von Mikhails finden Sie eine Beschreibung, wie Sie nicht benötigte Symbole hochladen. Diese Antwort verhindert das Hochladen von Symbolen, wodurch die Absturzsymbolik über iTunesConnect
JConway

2
Tun Sie das NICHT, wenn Sie dies tun, können Sie
Ihre
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.