【问题标题】:Flutter App size is still the same even after scaling down images即使缩小图像,Flutter App 大小仍然相同
【发布时间】:2021-11-17 22:27:49
【问题描述】:

我正在玩弄颤振并构建一个简单的测验应用程序。该项目几乎已准备好在 Play 商店上发布,并且有几处需要修复。但是,我尝试了新的颤振--analyze-size 命令,发现我可以通过缩小图像来进一步减小文件大小。我缩放了图像(它显着减小了尺寸)并替换了原始文件。 然后我运行flutter cleanflutter pub get 并运行flutter build apk --analyze-size --target-platform=android-arm64 只是为了再次测试。虽然我减小了图像文件的大小,但分析工具显示的大小与以前相同。

我还在 android studio 中尝试了 invalidate caches/restart 选项。但还是一样的结果。当我在 DevTools 的 Diff 选项中选择两个 json 文件进行比较时,它说它们是相同的文件。请问,有人可以指出如何在不创建新项目和移动文件和资产的情况下解决此问题吗?

附:我在 Windows 10 上使用 Flutter 频道测试版 2.5.0

【问题讨论】:

    标签: android flutter dart apk flutter-devtools


    【解决方案1】:

    除了flutter clean,试试rm -rf build

    【讨论】:

    • 运行它时会发生什么?你能解释一下吗
    • @NuwanThisara 它应该会清理所有生成的文件,您将在接下来的flutter build apk --analyze-size --target-platform=android-arm64中从头开始生成它们
    • @NuwanThisara 不客气,如果有帮助请告诉我。
    【解决方案2】:

    正如answer 中提到的,在运行flutter clean 之前,请检查您的 Windows 任务管理器是否有一些 Flutter 进程在后台运行,这是真的,停止它。

    不过,目前您可以将 Flutter 版本更新为 2.5.1 (stable)。如何?运行此命令:flutter upgrade

    另外,您可以使用flutter channel <channel_name>switch between 4 个发布渠道(稳定版、测试版、开发版和主版)

    【讨论】:

    • 如果我重新启动电脑并尝试问题中的命令,这个答案是否仍然有效?
    • 我想是的。告诉我你找到了什么解决方案。
    【解决方案3】:
    1. 确保您缩小尺寸的图像是您的flutter assets 的一部分。如果它们未在 pubspec.yml 中列出,则它们不是您的 apk 文件的一部分。如果它们不是您的 apk 文件的一部分,那么无论您减小什么大小,都不会影响 apk 大小。您也不会在分析结果文件.json 中看到任何差异。

    2. 仔细检查您的输出 apk 文件中图像的大小是否确实发生了变化。当您运行 --analyze-size 时,它还会创建 apk。在 Android Studio 中,您可以打开 apk 并检查 apk 中打包的图像大小。

    有时 APK 大小保持不变,但可下载的大小会发生变化。我也不确定这里发生了什么,但只要减小 apk 中的实际图像大小并减小最终用户的下载大小,那么初始目的已经达到,所以我继续。

    【讨论】:

      【解决方案4】:

      您应该按照以下步骤来减小 FLutter 应用程序的大小:

      1. 使用 google-fonts 包
      2. 使用flutter build apk --split-per-abi 构建apks
      3. 从捆绑包中删除不需要的图标。为此,请在您的 apk 构建命令中添加 --no-tree-shake-icons 标志
      4. 使用.svg 格式图标
      5. release 块内的/android/app/build.gradle中使用shrinkResources true
      6. 删除未使用的资产/包
      7. 使用缓存图像而不是使用来自资产的图像
      8. 使用 progaurd(here)。

      【讨论】:

        【解决方案5】:

        重命名图像(添加 1 或其他一些小东西),清理,重建,然后重命名回原始名称,清理,重建。

        Flutter 可以缓存文件名。

        【讨论】:

          【解决方案6】:

          您可以尝试以下操作以确保不会发生这种情况,

          按顺序:

          • 运行flutter clean
          • 手动删除/build文件夹,与flutter clean基本相同
          • 正如@Guillem 已经说过的那样,可能存在任务管理器故障restarting machine 应该可以解决问题。
          • flutter pub cache repair 基本上会触发与发布规范相关的缓存,但在您的情况下触发缓存刷新可能会有所帮助,请尝试一下。
          • Backup All image assets 某处并从项目中删除它们只是为了在没有它的情况下构建它,然后在错误时在项目中包含图像并再次尝试上述步骤。

          让我知道这是否对你有用。

          【讨论】:

            猜你喜欢
            • 2019-12-28
            • 1970-01-01
            • 1970-01-01
            • 2021-10-13
            • 1970-01-01
            • 2021-07-25
            • 1970-01-01
            • 2016-09-15
            • 1970-01-01
            相关资源
            最近更新 更多