为什么 flutter apk 文件大小有点大

Why flutter apk file size is little bigger

有一个 Android 应用程序是用 ionic4 实现的,我在其他用 flutter 编写的应用程序中实现了相同的功能,但 ionic apk 文件大小仅为13MB。具有类似功能的 flutter apk(实施仍未完成)文件大小为 21MB.

我有以下问题:

有人帮我减小应用 flutter 大小吗?

您将 Flutter apk 构建为调试版还是发布版?这对 apk 文件大小有很大的影响。此外,Flutter 和 Ionic 是不同的框架,因此 apk 大小不同的情况并不少见(有关为什么 Ionic 的文件大小更小的更多详细信息,您可以查看 this,不仅比较大小,还比较性能、易用性等)。

关于你的第二个问题:你可以做些什么来减少 Flutter apk 的大小?

  1. 删除不使用的包、库或插件
  2. 检查应用中包含的资产大小(图片、视频等)
  3. 检查您是编译到发布模式还是调试模式。同样,这会有所不同。
  4. 如果您要将 apk 上传到 Google Play 商店,您可以构建一个 Bundle 而不是 Apk。这可以优化您的应用程序的大小。

请注意这些:

如果您使用 flutter build apk 构建您的 apk,它将同时包含 arm-32 和 arm-64 apk(当您构建 apk 时,哪个 flutter 将显示在控制台中)。如果您正在构建应用程序包,这不是问题,而且它的大小要小得多。

为了避免一个平面 apk 包含 arm-32 和 arm-64,您可以使用以下两个命令分别构建它们:

flutter build apk --target-platform=android-arm

以上会生成arm-32位apk。转到 project -> build -> app -> release 并将 apk 重命名为:app-armeabi-v7a-release.apk.

然后在 pubspec.yaml 中递增版本代码,接下来 flutter pub get 并执行此操作:

flutter build apk --target-platform=android-arm64

以上会生成arm-64位apk。转到 project -> build -> app -> release 并将 apk 重命名为:app-arm64-v8a-release.apk.

然后可以分别提交两个apks(低版本先提交)

因为,你必须通过增加版本代码来 运行 两个命令,flutter 通过这个命令(我认为 flutter > 1.5.4)使它变得更容易:flutter build apk --split-per-abi。该命令将增加第二个 apk 的 apk 版本代码,并为您提供两个重命名的 apk(请注意,此命令将生成更高版本的代码(例如:3222))。

来自文档:

From the command line:

Enter cd <app dir>
(Replace <app dir> with your application’s directory.)
Run `flutter build apk --split-per-abi`
(The flutter build command defaults to `--release`.)

This command results in two APK files:

<app dir>/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
<app dir>/build/app/outputs/apk/release/app-arm64-v8a-release.apk
<app dir>/build/app/outputs/apk/release/app-x86_64-release.apk

Removing the --split-per-abi flag results in a fat APK that contains your code compiled for all the target ABIs. Such APKs are larger in size than their split counterparts, causing the user to download native binaries that are not applicable to their device’s architecture

read more here.

另外,检查这些:

  • 正如提到的其他答案一样,删除所有不必要的资产(图像、字体 和文件)。

如果你有太多的字体会严重影响 apk 的大小,flutter 也通过创建一个包来解决这个问题,让你从 google 字体库中获取字体(很棒的包,让你可以访问这么多的字体和灵活性,可以在任何地方使用)。获取 the package here and Read more here.

  • 删除不使用的不必要的包/插件(影响不大 虽然)。