Flutter 在混淆时上传调试符号没有意义吗?

Posted

技术标签:

【中文标题】Flutter 在混淆时上传调试符号没有意义吗?【英文标题】:Flutter is it meaningless to upload debug symbols on obfuscating? 【发布时间】:2021-12-20 15:40:26 【问题描述】:

我已将 Flutter 混淆包上传到 Play 商店。我收到以下警告:

此 App Bundle 包含原生代码,而您尚未上传调试 符号。我们建议您上传一个符号文件以使您的 崩溃和 ANR 更易于分析和调试。

混淆你的应用然后添加调试符号不是没有意义吗?

混淆背后的想法是通过使代码不可读来进行困难的逆向工程。提供调试符号文件与提供解密混淆映射相同吗?

【问题讨论】:

【参考方案1】:

混淆就是将人类可读的类和函数重命名为对人类毫无意义的东西。机器不关心名称,但试图对您的代码进行逆向工程的人会更难。

另一方面,当您的应用崩溃时,Google Play 开发者控制台会记录此崩溃,供您检查和调试。但由于最终用户拥有您应用的混淆版本,因此发送给您的报告是用无意义的名称编写的,您无法对其进行调试。

现在,Play 管理中心内部使用调试符号映射将崩溃报告重新符号化为人类可读的类名,以便您轻松调试。

TLDR:上传调试符号。它们允许您(开发人员)调试被滥用的崩溃报告,并且仅(间接)提供给您,而不是试图对您的应用进行逆向工程的人

【讨论】:

以上是关于Flutter 在混淆时上传调试符号没有意义吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将mapping.txt上传到PlayStore

需要在 GDB 中加载共享库的调试符号

Flutter 开发从 0 到 1 iPhone 真机调试

Golang二进制文件混淆保护

有没有办法在调试 Flutter App 时更改值

通过将 proguard 规则映射文件上传到 google play 控制台去混淆生产 Android 错误