【问题标题】:Why flutter apk file size is little bigger为什么颤振 apk 文件大小要大一些
【发布时间】:2020-04-25 14:00:21
【问题描述】:

有一个使用ionic4 实现的Android 应用程序,我在用flutter 编写的其他应用程序中实现了相同的功能,但离子apk 文件大小仅为13MB。具有类似功能的flutter apk(实现仍然不完整)文件大小为21MB

我有以下问题:

  • 我想了解是什么让我的apk 变大了?

  • 会不会和代码实现或其他有关?

有人帮我缩小应用flutter的大小吗?

【问题讨论】:

标签: android ionic-framework flutter apk


【解决方案1】:

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

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

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

【讨论】:

  • 我将 apk 构建为发行版。调试 apk 大小超过 40 MB,发布 apk 大小为 25MB。感谢您的建议和信息,我会按照您的建议在我的 apk 中检查它们。
【解决方案2】:

请注意这些:

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

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

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

上面会产生arm-32 bit 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 bit apk。转到 project -> build -> app -> release 并将 apk 重命名为:app-arm64-v8a-release.apk

那你就可以分别提交两个apk了(apk版本低的先)。

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

来自文档:

从命令行:

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`.)

此命令会生成两个 APK 文件:

<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

删除 --split-per-abi 标志会导致一个胖 APK 包含 为所有目标 ABI 编译的代码。此类 APK 在 大小比他们的拆分同行,导致用户下载 不适用于其设备架构的本机二进制文件

read more here.

另外,检查这些:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2021-08-25
    • 1970-01-01
    • 2015-02-13
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多