我使用Xcode为iOS编译了一个静态库,并删除了符号。它是在Release配置中编译的。当我将静态库复制到另一个iOS项目(我将其物理复制到另一个目录)时,我仍然可以在单步执行代码时查看静态库的源代码。我在源窗口中单击在Finder中显示,它指向磁盘上相应的源文件。
我在十六进制编辑器中打开了库,它确实包含了我机器上源文件的路径,以及一些不应该公开的其他文本数据。
我在项目设置中遗漏了什么吗?如果这是预期的行为,我怎样才能确保客户不会看到符号,源文件名等?
答案 0 :(得分:7)
找到所需的编译器选项。
在LLVM代码生成中,将生成调试符号设置为否,将默认隐藏的符号设置为是。出于某种原因,即使你告诉它剥离符号,除非设置了符号,否则它不会这样做。
答案 1 :(得分:1)
您可以使用
检查符号是否有条纹nm filename
剥离不会自动发生,您需要设置xcode来剥离它们,并且有几个标记负责:
先决条件:“STRIP_INSTALLED_PRODUCT(剥离链接产品)。”
b)STRIP_INSTALLED_PRODUCT 只有当您将DEPLOYMENT_POSTPROCESSING设置为YES时,才能在非appstore构建中工作。
有一种方法可以手动剥离符号,只需调用
即可剥离YOURBINARYNAME
答案 2 :(得分:1)
strip YOURBINARYNAME
是不够的。您需要执行以下操作:
strip -S YOURBINARYNAME
手动删除调试符号。当然,正确配置项目会更好,但如果使用供应商脚本构建第三方库,则可能需要手动完成。如果剥离调试符号,Mapbox-native-gl从550mb变为22mb!