Flutter中的--split-debug-info是什么意思?

6

从文档中可以看到:

在构建应用的发布版本时,建议使用 --split-debug-info 标记。该标记可以大大减小代码大小。有关使用此标记的示例,请参见以下内容

我还查阅了有关混淆 Dart 代码的信息:

要混淆您的应用,请使用 --obfuscate 标志构建发布版本,并与 --split-debug-info 标志结合使用。--split-debug-info 标志指定 Flutter 可以输出调试文件的目录。此命令会生成一个符号映射。当前支持 apk、appbundle、ios 和 ios-framework 目标(macos 和 aar 在主和开发频道上受支持)。

我理解混淆 Dart 代码的含义,但我找不到单独使用 --split-debug-info 的作用。我读到它会分割调试信息,但具体是哪些信息,是否存在任何缺点,并且它与混淆有何不同呢?

2个回答

8

--split-debug-info 是用于提取生成人类可读的 StackTrace 所需的数据。

当我们有一个 StackTrace 时,我们既有类/方法名称,也有相关联的行号。 拥有这些信息意味着应用程序包含了生成此类 StackTrace 所需的所有信息- 这可能会非常占用内存。

--split-debug-info 的作用是最小化名称和其他类似元素。由于它使 StackTrace 难以阅读,因此 --split-debug-info 还会生成一些需要保留的文件,这些文件允许将最小化的 stack trace 转换为人类可读的内容。

通过 flutter symbolize 命令来解压缩 StackTrace,该命令需要同时使用最小化的 stack trace 和 --split-debug-info 的输出才能生成正常的 StackTrace。


1
--split-debug-info 标志指定了 Flutter 可以输出调试文件的目录。
例如:
flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>

在这里,您可以使用它来混淆您的应用程序,使用--obfuscate标志和--split-debug-info标志结合构建发布版本。
如果您以后想要去混淆堆栈跟踪,则需要它。事实上,一旦您混淆了二进制文件,这就是管理包含符号文件的备份的方式。
该文件对于阅读模糊的堆栈跟踪或调试由您的模糊应用程序创建的堆栈跟踪至关重要。
请注意:--split-debug-info标志也可以单独使用。实际上,它可以显著减小应用程序的大小。
有关应用程序大小的更多信息,请参见测量应用程序大小

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接