【问题标题】:How to test/debug tree shaking in Flutter?如何在 Flutter 中测试/调试摇树?
【发布时间】:2018-10-15 18:00:42
【问题描述】:

Flutter 带有 tree shaking 编译。仅包括使用的代码。

但这很容易在不经意间破坏。

有什么方法可以测试和调试摇树?

【问题讨论】:

  • 它是如何易碎的?
  • if platform === IOS then CupertinoButton else MaterialButton 之类的东西实际上会破坏树抖动。因为编译器假设这个变量会随着时间而改变
  • 你试过比较二进制大小吗?

标签: dart flutter


【解决方案1】:

为了调试,可以在配置文件模式下连接到 Observatory。然后检查所需 dart 文件的内容

您不会在配置文件模式下看到实际来源;但您会看到文件内部内容的概览,包括已定义的类及其方法。

例如,如下所示的小部件:

class Home extends StatelessWidget {
  _unused() {
    print('home');
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

在天文台以配置文件模式进行检查时; _unused 方法不会出现在函数列表中:

【讨论】:

  • 嗨,您有没有找到一种方法来检查是否为函数中的每一行启用了摇树?
  • 如果您正在编写一个特定于平台的小部件(Material vs Cupertino),使用条件渲染每个平台,在为 android 或 ios 构建应用程序时,它是否会摇动未使用的平台小部件??
  • 没有。这将同时发布两个平台
  • 可以对 dart 应用而不是 Flutter 应用做同样的事情吗?
【解决方案2】:

现在 Flutter 中已经有一个 App Size DevTool

首先,使用您的应用程序的大小报告生成 json(例如对于 linux):

flutter build linux --analyze-size --release

接下来,使用生成的报告运行该工具(更改路径):

flutter pub global run devtools --appSizeBase=/home/tomek/.flutter-devtools/linux-code-size-analysis_01.json

Analysis tab 中,只需查看转到Library or Class 部分并导航到您的代码:Root->bundle->lib->libapp.so (Dart AOT)-><your package name>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2020-03-09
    • 1970-01-01
    • 2019-10-28
    • 2019-04-23
    相关资源
    最近更新 更多