去除iPhone应用程序的符号

Xcode中有什么设置去除iphone应用程序的符号?

我在Xcode中使用这些设置,但仍然使用二进制文件编辑器在可执行文件中看到类名和它们的方法。

部署:

1)部署后处理(选中)

2)在复制期间去除debugging符号(选中)

3)带状连接产品(选中)

4)使用单独的条(选中)

链接:

5)死码清除(选中)

GCC 4.0 – 代码生成

6)生成debugging符号(不勾选)

Objective-C类和方法信息不能被剥离 – 这是执行所必需的。 如果你愿意,你可以做的最好的事情就是想出一些混淆。

我做的。

我只检查以下三个设置,其他设置是不相关的。

1)部署后处理(选中)

3)带状连接产品(选中)

4)使用单独的条(选中)

在这里输入图像说明

当然,你需要在模式编辑器中检查“Distribution”版本。 在这里输入图像说明

然后干净! 并build立。

我也确认“strip”命令是由Xcode调用的:显示日志导航器,selectBuild ….释放,在底部find进度说明:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip /Users/xxx/Library/Developer/Xcode/DerivedData/aaaaa-dytaamkvztdwfreoqteyeijwqdcu/Build/Products/Distribution-iphoneos/aaaaa.app/aaaaa 

在这里输入图像说明

最后,我用“nm”命令检查了最终产品文件的结果,

nm -a /Users/xxx/Library/Developer/Xcode/DerivedData/aaaaa-dytaamkvztdwfreoqteyeijwqdcu/Build/Products/Distribution-iphoneos/aaaaa.app/aaaaa

当前应用程序的所有函数名称都被剥离了。 如下面的函数名称:

000b0a00 t _pj_ioqueue_create

00092ae4 t ___destroy_helper_block_200

00092af8 t ___ 68- [MyClass myMethod:param2] _block_invoke_21782

注意:Objective-C方法和属性名称string仍然生成到应用程序文件中,但这不是OS加载程序的符号名称,它们只是Objective-C类的元数据。

Interesting Posts