【问题标题】:Flutter what does --split-debug-info doFlutter --split-debug-info 做了什么
【发布时间】:2020-07-01 16:42:14
【问题描述】:
来自文档:
在构建应用的发布版本时,请考虑使用 --split-debug-info 标签。这个标志可以显着减少代码大小。使用此标志的示例
我还检查了混淆 Dart 代码:
要混淆您的应用,请使用 --obfuscate 标志和 --split-debug-info 标志构建发布版本。 --split-debug-info 标志指定 Flutter 可以输出调试文件的目录。此命令生成符号映射。目前支持 apk、appbundle、ios 和 ios-framework 目标(master 和 dev 通道都支持 macos 和 aar)。
我确实了解混淆 dart 代码的含义,但我找不到 --split-debug-info 本身的作用。我读到它拆分调试信息。我们在谈论什么信息,有什么缺点吗?它与混淆有什么不同?
【问题讨论】:
标签:
flutter
debugging
dart
【解决方案1】:
--split-debug-info 是关于提取生成人类可读的 StackTrace 所需的数据。
当我们有一个 StackTrace 时,我们有类/方法名和相关的行。
拥有这些信息意味着该应用程序包含了生成此类 StackTrace 所需的所有信息——这会很重要
--split-debug-info 是关于最小化名称和其他类似元素。
然后,由于它使 StackTrace 不可读,--split-debug-info 还会生成一些应该保留的文件,这允许将最小化的堆栈跟踪转换为人类可读的内容。
StackTrace 的解包是通过 flutter symbolize 命令完成的 - 该命令同时采用最小化的堆栈跟踪和 --split-debug-info 的输出以在正常的 StackTrace 中生成。
【解决方案2】:
--split-debug-info 标志指定了 Flutter 可以输出调试文件的目录。
例如:
flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>
在这里,您可以使用它来混淆您的应用程序,构建发布版本
使用
--obfuscate 标志,结合--split-debug-info 标志。
如果您以后想要对堆栈跟踪进行去混淆处理,则需要它。事实上,一旦你混淆了你的二进制文件,这就是管理包含符号的文件的备份的东西。
该文件对于读取隐藏的堆栈跟踪或调试由隐藏的应用程序创建的堆栈跟踪至关重要。
注意: --split-debug-info 标志也可以单独使用。事实上,它可以显着减小应用程序的大小。
有关应用大小的更多信息,请参阅Measuring your app’s size。