Xcode中用于剥离iphone应用程序符号的设置是什么?
我在Xcode中使用这些设置但仍然看到类名和它们的方法 使用二进制文件编辑器的可执行文件。
部署:
1)部署后处理(已检查)
2)复制期间剥离调试符号(选中)
3)剥离链接产品(已选中)
4)使用单独的条带(已选中)
链接:
5)死代码剥离(已检查)
GCC 4.0 - 代码生成
6)生成调试符号(未选中)
答案 0 :(得分:6)
Objective-C类和方法信息无法剥离 - 它是执行所必需的。如果你愿意的话,你能做的最好就是想出某种混淆。
答案 1 :(得分:4)
我做到了。
我只检查了三个设置,其他设置无关紧要。
1)部署后处理(选中)
3)剥离链接产品(已选中)
4)使用单独的条带(已选中)
当然,您需要在架构编辑器中检查“分发”版本。
然后清理!!!并建立。
我还确认Xcode调用了“strip”命令: 显示日志导航器,选择Build .... release,在底部,我找到了进度描述:
/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
击><击> 撞击>
注意:仍然会为app文件生成objective-C方法和属性名称字符串,但这不是OS加载程序的符号名称,它们只是objective-C类的元数据。