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

2024-02-15

当我编译release我的 iOS 应用程序版本(基于 Apple 提供的标准 iOS 应用程序模板),查看生成的可执行二进制文件,我看到了各种符号,甚至是本地 cpp 源代码和标头路径。我真的很困惑为什么会这样(我还没有启用 RTTI*)。尤其是源文件路径让我在全球范围内发送这个应用程序感到不舒服(为什么每个人都应该能够看到我的开发机器的目录布局?)。

以下是两个(随机挑选、经过审核的)摘录:

TS/../ACTORS/CActorCanvasCharPart.cpplastMeshcapVerticesOFF BOUNDSupload VERTICES: %d 20CActorCanvasCharPartgrassscrub/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_grass.cppbaseShadowmowerstartmowerloopmowermowerCharcutGrassChargrassStuffgrassParticles/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_grass.h17CStateGame2_grasssinwriteStroke/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_flowers.hflowerBedsandTrailclickstart3inplace2sandDrag/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame

这里有很多自定义类型和结构体的符号:

CAssetMgr="_vptr$CMgrBase"^^?"pMain"^{CMain}"inited"B"curveCount"S"curveSpecs"^{CCurveSpec}"gameSpecs"[23{CGameStateSpec="header"{SpecDiskHeader="type"i"version"S}"gameID"C"backgroundColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"clickPointColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"clickPointIconColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"hintColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}}]"currentFont"^{CCharset}"userCharParts"^^{CCharPart}"words"{CDataSet<CName4,CCharArray>="_vptr$CObjectBase"^^?"pMain"^{CMain}"count"i"data"*"dataSize"l}"sets"{CDataSet<CName16,CCharArray>="_vptr$CObjectBase"^^?"pMain"^{CMain}"count"i"data"*"dataSize"l

这种情况可以避免吗,如何避免呢?

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

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

Joined Up Lite
/Users/lloydy/Documents/Development/iPhone/ABC Joined Up/main.m
/Users/lloydy/Documents/Development/iPhone/ABC Joined Up/Classes/SettingsView.m

Crayon Physics
/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

Wall Times
/Users/fred/_WORK/ZDNDRP/WallTimes/main.m
/Users/fred/_WORK/ZDNDRP/WallTimes/Classes/SystemCategories.m

Jumbo Calculator
/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 macros.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免 iOS 二进制文件中的符号和源路径? 的相关文章

随机推荐

  • Bulma:如何定义移动设备上的堆栈顺序

    我正在采取Bulma Flexbox CSS 框架 http bulma io 试一试 到目前为止它非常整洁 我发现的唯一障碍是我似乎无法设置移动设备的显示顺序 div class columns div class column foo
  • iPhone SDK / Facebook Connect:使用自定义登录对话框

    正如标题所说 是否可以在本机 iPhone 应用程序中使用 Facebook Connect 或任何其他 FB 集成方式 而无需借助内置登录对话框 这看起来很糟糕 我可以创建自己的自定义登录屏幕 要求输入 facebook 登录用户名和密码
  • 令人困惑的 python 列表理解

    我试图弄清楚这个列表理解是如何工作的 但我不太明白它是如何工作的 如果有人可以写出非列表理解的等价物 我想我可以理解 这是我坚持的路线 item for sublist in li for item in sublist 它的既定目的是扁平
  • RecyclerView onMeasure性能问题

    我在 recyclerView 中使用相当复杂的 recyclerView 项目布局 我已经开始遇到性能问题有一段时间了 每次运行应用程序时 我都会在 recyclerView 中的视图布局膨胀时收到警告 例如 D View ANR War
  • 偶数总和错误

    我收到以下错误 1 expected before line 2 2 expected at end of input line 12 这是我的代码 include
  • Ruby 修改一段字符串

    对于 Ruby 来说是全新的 这是一个简单的家庭作业 Secret code 函数需要接收输入字符串并执行以下操作 在空格之前的第一个字母块中 除第一个字符外的所有字母都大写 反转字符串 因此 如果输入是 super duper 则输出应该
  • 想要创建一个很酷的静态 UI,但是:“静态表视图仅有效......”

    我正在创建一个类似的视图 为此 我尝试使用 Storyboard 其中添加 2 个 TableView 均作为 静态单元格 然后直接从 Storyboard 手动添加单元格内容 在我的故事板中 它看起来很棒 但是当我构建时 我得到 en l
  • cv2可以直接加载上传的图片吗?

    我内存中有一个上传的文件 我想用 cv2 操作该文件 目前 我将文件写入磁盘 然后使用 cv2 读取它 如何跳过写入文件并直接使用 cv2 加载它 file request files file if file and allowed fi
  • 如何通过celery任务访问orm?

    我正在尝试使用 sqlalchemy celerybeats 翻转数据库中特定类型对象的布尔标志 但是如何从tasks py 文件访问我的orm from models import Book from celery decorators
  • JavaScript:将节点复制到 DocumentFragment

    我认为 DocumentFragment 的全部要点是能够在不接触 DOM 的情况下构造内容 直到它准备好为止 鉴于 DocumentFragment 不支持innerHTML 这可能有点乏味 另一方面 一旦构建完成 就可以很容易地通过片段
  • Ionic - 在 IOS 上,Stripe 支付按钮被键盘隐藏

    我的应用程序与 Stripe 集成用于支付目的 但我在 IOS 上遇到问题 人们无法支付 支付按钮悬停在键盘上方 没有像 Android 上那样的关闭按钮 我也无法成功地使弹出窗口滚动 我在用着定制集成 https stripe com d
  • 使用 pm2 以 root 身份启动应用程序

    我有一个守护进程 必须在启动时以 root 身份运行 我使用 pm2 启动其他应用程序 但无法确定它是否可以以 root 身份启动应用程序 能做到吗 如果没有 我有什么选择 我遇到了问题sudo pm2 start api 但这是因为 pm
  • 使用 docker for mac 在 docker 容器中公开 TTY 设备

    我正在尝试将插入我的 mac 的 Arduino 暴露给我正在运行的 Linux 实例适用于 Mac 的 Docker https docker github io docker for mac 没有虚拟机 Arduino 将自己暴露为 d
  • 为什么 SendKey Enter 无法在 Chrome 浏览器中使用

    我正在尝试检查在 Chrome 浏览器中输入 Excel 的几个 vin 此代码将打开浏览器并输入它们 但不会按 Enter 键来单击按钮 不知道我做错了什么 但我尝试了几种变体 但似乎想不出任何办法 抱歉 如果我的格式很糟糕 这是我第一次
  • Python 中的 {:02d} 是什么意思

    很难找到有关的信息 在线的 我看到下面的一些代码 def dateformat date day month year date split return 4d 02d 02d format int year int month int d
  • 如何让 Flask-SQLAlchemy 与应用程序工厂模式一起使用

    我想使用 Flask SQLAlchemy 设置一个 sqlite 数据库 我收到操作错误 sqlite3 OperationalError no such table 这是一个用 Flask 编写的 Web 应用程序 我想使用 Flask
  • 验证 GWT 组件需要很长时间

    在 Eclipse 中验证 GWT 组件过程需要很长时间 几乎不可能完成富有成效的工作 我已经从我的Eclipse gt Window gt Preferences gt Validators 已选择Supend all validator
  • 了解谷歌人工智能平台自定义预测例程的输入

    我正在关注this https cloud google com ml engine docs tensorflow custom prediction routines有关自定义预测例程的文档 我试图了解自定义预测例程的输入是什么样的 发
  • 使用 R,如何计算 PDF 文件中的页数?

    我的目录中有大约一百个长 PDF 文件 想知道 R 是否可以计算每个文件中有多少页 我的操作系统是Windows 8 以下是 10 页 PDF 文件的链接 以帮助您测试解决方案 MWE pdf 文件 https www pdf tools
  • 如何避免 iOS 二进制文件中的符号和源路径?

    当我编译release我的 iOS 应用程序版本 基于 Apple 提供的标准 iOS 应用程序模板 查看生成的可执行二进制文件 我看到了各种符号 甚至是本地 cpp 源代码和标头路径 我真的很困惑为什么会这样 我还没有启用 RTTI 尤其