flutter - Flutter 在混淆时上传调试符号没有意义吗?
问题描述
我已将颤振混淆包上传到 Play 商店。我收到以下警告:
此 App Bundle 包含本机代码,并且您尚未上传调试符号。我们建议您上传符号文件,以使您的崩溃和 ANR 更易于分析和调试。
混淆你的应用程序然后添加调试符号不是没有意义吗?
混淆背后的想法是通过使代码不可读来进行困难的逆向工程。提供调试符号文件是否与提供解密混淆映射相同?
解决方案
混淆就是将人类可读的类和函数重命名为对人类毫无意义的东西。机器不关心名称,但试图对您的代码进行逆向工程的人会更难。
另一方面,当您的应用崩溃时,Google Play 开发者控制台会记录此崩溃,供您检查和调试。但是由于最终用户拥有您的应用程序的混淆版本,因此发送给您的报告是用无意义的名称编写的,您无法对其进行调试。
现在,Play 控制台内部使用调试符号映射将崩溃报告重新符号化为人类可读的类名,以便您轻松调试它。
TLDR:上传调试符号。它们允许您(开发人员)调试使用过的崩溃报告,并且仅对您可用(间接),而不是试图对您的应用程序进行逆向工程的人
推荐阅读
- javascript - 为什么在Javascript中使用Date()时需要使用关键字new
- php - 在随机文本中的某些单词之前添加中断?
- python - 使用 keras 计算每个时期的 Fscore(不是批量)
- html - 如何缩放徽标块以完全适合导航栏?
- json - 有没有办法将数据从 json 文件导入 sqlite,其中表列名称与 json 文件中的键值不同?
- python - Tkinter 进入多个验证
- sql - PostgreSQL 在 date1 和 date2 之间选择日期
- css - angular/ng-bootstrap/css 如何防止将前 100px 用于任何显示,但设置为固定顶部的标题?
- r - 如何在 R 中为图形的背景部分着色以指示感兴趣的时间段
- ruby-on-rails - 通过一个控制器操作为两个模型创建 Rails 对象