c – 如何避免iOS二进制文件中的符号和源路径?

c – 如何避免iOS二进制文件中的符号和源路径?,第1张

概述当我编译我的iOS应用程序的发布版本(基于标准的Apple提供的iOS应用程序模板)时,查看生成的可执行二进制文件,我看到各种符号甚至本地cpp源代码和头文件路径.我真的很难过为什么会这样(我没有启用RTTI *).特别是源文件路径让我感到不舒服在全球范围内发送这个应用程序(为什么每个人都能看到我的开发机器的目录布局?). 这是两个(随机挑选,主持)摘录: TS /../ ACTORS / CAc 当我编译我的iOS应用程序的发布版本(基于标准的Apple提供的iOS应用程序模板)时,查看生成的可执行二进制文件,我看到各种符号甚至本地cpp源代码和头文件路径.我真的很难过为什么会这样(我没有启用RTTI *).特别是源文件路径让我感到不舒服在全球范围内发送这个应用程序(为什么每个人都能看到我的开发机器的目录布局?).

这是两个(随机挑选,主持)摘录:

TS /../ ACTORS / CActorCanvasCharPart.cpplastMeshcapVerticesOFF BOUNDsupload VERTICES:%d
20CActorCanvasCharPartgrassscrub /卷/数据/ iOS_projects /代码/ MyAppname_proj / MyAppname /源极/ STATES /游戏/ 2 / CStateGame2_grass.cppbaseShadowmowerstartmowerloopmowermowerCharcutGrassChargrassstuffgrassparticles /卷/数据/ iOS_projects /代码/ MyAppname_proj / MyAppname /源极/ STATES /游戏/ 2 / CStateGame2_grass.h17CStateGame2_grasssinwritestroke /卷/数据/ iOS_projects /代码/ MyAppname_proj / MyAppname /源极/ STATES /游戏/ 2 / CStateGame2_flowers.hflowerbedsandTrailclickstart3inplace2sandDrag /体积/数据/ iOS_projects /代码/ MyAppname_proj / MyAppname /源极/ STATES /游戏/ 2 / CStateGame

以下是自定义类型和结构的许多符号:

CAssetMgr = “_的vptr $CMgrBase” ^^? “段Pmain” ^ {CMAIN} “inited” B “curveCount” S “curveSpecs” ^ {CCurveSpec} “gameSpecs”[23 {CGameStateSpec = “标题”{Specdiskheader = “类型” 我“版本” S} “游戏ID” C “的backgroundcolor”{CRGBAcolorf = “R” F “克” F “b” F “一” F} “clickPointcolor”{CRGBAcolorf = “R” F “克” F “b” F “一” F} “clickPointIconcolor”{CRGBAcolorf = “R” F “克” F “b” F “一” F} “hintcolor”{CRGBAcolorf = “R” F “克” F “b” F “一” F }}] “currentFont” ^ {CCharset} “userCharParts” ^^ {CCharPart} “字”{cdataSet< Cname4,CChararray> = “_的vptr $CObjectBase” ^^ “段Pmain” ^ {CMAIN} “计数” i“的数据“*” 命令datasize “L}” 套 “{cdataSet< Cname16,CChararray> =” _的vptr $CObjectBase “?^^” 段Pmain “^ {} CMAIN” 计数 “i” 的数据 “*” 命令datasize“升

这可以避免,怎么样?

*更新:我刚发现RTTI默认开启.所以我清理了目标,禁用了RTTI(GCC_ENABLE_CPP_RTTI = NO)并重新编译.我仍然在二进制文件中看到很多符号和源路径.

更新2:我从应用程序商店检查了一些其他应用程序,其中许多也显示了他们的源文件路径.如果你问我,真可怕

加入精简版
/ Users / lloydy / documents / Development / iPhone / ABC Joined Up / main.m
/ Users / lloydy / documents / Development / iPhone / ABC Joined Up / Classes / SettingsVIEw.m

蜡笔物理学
/Users/smproot/Desktop/unzip/CrayonPhysics/v104/Classes/Crayon/src/ceng/gameutils/killSpriteslowly/killSpriteslowly.cpp
/Users/smproot/Desktop/unzip/CrayonPhysics/v104/Classes/Crayon/src/ceng/tasks/task/sdl/mixer/ctaskaudiosdlmixer.cpp

华尔街时报
/Users/fred/_WORK/ZDNDRP/WallTimes/main.m
/Users/fred/_WORK/ZDNDRP/WallTimes/Classes/SystemCategorIEs.m

巨型计算器
/ Users / Christopher / documents / Development / JumboCalculator 1.0.3 / main.m.
/ Users / Christopher / documents / Development / JumboCalculator 1.0.3 / Classes / CalculatorFaceVIEwController.m

解决方法 文件路径很可能来自断言宏,它将__file__字符串化为其失败消息的一部分. iOS的assert(3)实现和NSAssert宏一样.

您可以通过定义NDEBUG(对于C断言)和NS_BLOCK_ASSERTIONS(对于NSAsserts)来删除发布版本中的断言.

总结

以上是内存溢出为你收集整理的c – 如何避免iOS二进制文件中的符号和源路径?全部内容,希望文章能够帮你解决c – 如何避免iOS二进制文件中的符号和源路径?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1061067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存