运行 `strip -S -x` 在我的 macOS 二进制文件中的所有框架上有缺点吗?如果没有,我怎样才能使该过程自动化?

Is there a downside to running `strip -S -x` on all frameworks in my macOS binary? If not, how can I automate that process?

我注意到 运行 strip -S -x(删除所有调试和所有本地符号)在我的应用程序 'Frameworks' 文件夹中的二进制文件上使它们小了约 25%,即使我有在我的构建设置中启用调试符号剥离。

另请注意,这也会使 Swift 支持库变小,并且似乎没有构建设置可以去除这些库。另外,我什至不能 100% 确定我的 "Strip debug symbols" 设置是否正确(即实际上导致调试符号被删除),因为 nm --debug-syms 仍然为它们显示大量符号,并且 strip -S(删除调试符号 table)仍然使它们变小。我的条带设置似乎是您在互联网上找到的推荐设置:

但是 运行 strip -S -x 是否有任何不利的副作用,例如以后无法符号化堆栈跟踪?

此外,如何在构建过程中自动执行此剥离,同时保持最终代码签名完整? 似乎将 -Xlinker -x -Xlinker -S 添加到我的 "Other Linker Flags" 将此过程应用于当前项目的二进制文件(包括框架),但不适用于我的依赖项项目(例如 CocoaPods)中的框架。这一点特别重要,因为相应地修改我包含的 CocoaPods 项目的构建设置并不容易。如上所述,它也与 Swift 支持库 dylibs 有关,它们也没有这样的链接器选项,但仍然受益于这种剥离。

现在可以在 .

找到我为发布版本找到的最好的(即最积极的同时也是可靠的)链接器标志