2015-12-18 14 views
7

Das hat mich zwar verrückt gemacht, aber ich habe schließlich herausgefunden, dass die Bitcode-Kompilierungsoption beim Exportieren meiner App für die Ad-hoc-Bereitstellung dazu führt, dass meine Debug-Symboldatei (dSYM) und meine Anwendungs-UUID nicht übereinstimmen.Wieso macht es das Neukompilieren von Bitcode unmöglich, in Ad-hoc-Versionen von Xcode zu symbolisieren und wie behebe ich es?

Deaktivieren der Option behebt dies, aber gibt es eine Möglichkeit, ich kann es mit der Option aktiviert haben? Ich lese den Tipp für diese Option und es sagt, dass der Laden diese Methode verwendet. Kann ich jetzt auch keine Absturzprotokolle aus dem App Store lesen, oder ist das nur ein lokales Problem? Hier

ist, was ich von einem alten Build vor dieser Xcode-Version erhalten:

dwarfdump --uuid app 
DD25E6C9-... (armv7) 
29F74B2E-... (arm64) 

dwarfdump --uuid app.dsym 
DD25E6C9... (armv7) 
29F74B2E... (arm64) 

Fein. Jetzt mit Bitcode an:

dwarfdump --uuid app 
E7D2BE71-... (armv7) 
5C871FD7-... (arm64) 

dwarfdump --uuid app.dsym 
BC93BCF5-... (armv7) 
3312658C... (arm64) 

Offensichtlich wird es nicht symbolisieren. Ich habe es mit der Option ausprobiert und es stimmt wieder überein. Ist das ein Problem, wenn Xcode keine Symbole für den neuen Bitcode-Build neu generiert? Und warum oh warum ist das standardmäßig auf ON und warnt Sie nicht vor Ihren Crash-Logs?

+0

In Veranstalter in Xcode gibt es einen „Download dSYMs“ Option, die die dSYMs für die Binärdateien Apple die Builds herunterladen soll, xcarchive. Aber für mich wird der dSYM für die Binärdatei immer noch fehlen, vielleicht wirst du mehr Glück haben. – OpenUserX03

Antwort

0

Wenn Bitcode aktiviert ist, XCode Archivierungsprozess produziert: 1. Mutter arm64 oder ARMv7 Code 2. Bitcode 3. DSYM-Datei (die UUID des nativen Code übereinstimmt)

Wenn Sie eine Ad- erzeugen Bei der Hoc-Verteilung und Aktivierung der Option "Bitcode compilieren" kompiliert XCode auch Bitcode in Native neu, was möglicherweise zu unterschiedlichen UUIDs für die arm64- und armv7-Teile führt. Die ursprüngliche app.dSYM wird nicht berührt (und stimmt somit nicht mit den neuen Binärdateien überein), stattdessen werden neue dSYMs im selben xcarchive-Ordner generiert, sie haben die Form "E2015333-1220-391E-928C-04C32A179EC9.dSYM" und stimmen mit den tatsächlichen UUIDs der neu kompilierten Binärdateien überein.

Die Geschichte endet nicht immer dort, diese neuen dSYM-Dateien können verschleiert sein (d. H. __hidden # 232434 anstelle der tatsächlichen Symbolnamen). Die Zuordnungen, um sie zu entschlüsseln, befinden sich auch im Ordner xcarchive in einem Ordnernamen "BCSymbolMaps".

DE-verschleiern eine solche DSYM man den folgenden Befehl verwenden würde:

dsymutil --symbol-map <bcSymbol-file> <obfuscated-dsym-file>