Gibt es einen Nachteil beim Ausführen von 'strip -S -x' auf allen Frameworks in meiner Mac OS-Binärdatei? Wenn nicht, wie kann ich diesen Prozess automatisieren?

7

Ich habe festgestellt, dass das Ausführen von strip -S -x (alle Debug- und alle lokalen Symbole entfernen) für die Binärdateien im Ordner "Frameworks" meiner App um ~ 25% kleiner ist, selbst wenn ich das Entfernen von Debug-Symbolen in meinen Build-Einstellungen aktiviert habe.

Beachten Sie auch, dass dies die Swift-Unterstützungsbibliotheken ebenfalls verkleinert, und es scheint, dass es keine Build-Einstellung gibt, um diese zu entfernen. Außerdem bin ich nicht 100% ig sicher, ob meine "Strip debug symbols" -Einstellungen korrekt sind (dh, dass Debugsymbole tatsächlich entfernt werden), da nm --debug-syms immer noch viele Symbole für sie anzeigt und strip -S (remove) die Debug-Symboltabelle) macht sie immer noch kleiner. Meine Streifeneinstellungen scheinen die empfohlenen zu sein, die Sie im Internet finden:

  • Deployment-Nachbearbeitung : Ja
  • Debug-Symbole beim Kopieren entfernen : Nein (hat sowieso keine Auswirkung, da die Frameworks an diesem Punkt bereits mit dem Code signiert sind)
  • Geketteltes Produkt entfernen : Ja
  • Strip-Stil : Debugging-Symbole

Aber gibt es nachteilige Nebeneffekte beim Ausführen von strip -S -x , z. B. weil Sie Stack-Traces später nicht symbolisieren können?

Wie kann ich dieses Stripping als Teil des Build-Prozesses automatisieren und gleichzeitig die endgültige Codesignatur beibehalten? Scheint, dass das Hinzufügen von -Xlinker -x -Xlinker -S zu meinen "anderen Linker-Flags" diesen Prozess anwendet zu den Binärdateien des aktuellen Projekts (einschließlich Frameworks), nicht jedoch zu den Frameworks in meinen Abhängigkeitsprojekten (z. B. CocoaPods). Dies ist besonders wichtig, da es nicht einfach ist, die Build-Einstellungen für meine enthaltenen CocoaPods-Projekte entsprechend zu ändern. Wie oben erwähnt, ist es auch relevant für die Swift-Support-Bibliothek dylibs, die ebenfalls keine solchen Linker-Optionen haben, aber dennoch von diesem Stripping profitieren.

    
MrMage 24.08.2017, 18:06
quelle

0 Antworten