为啥颤振 apk 文件大小要大一些
Posted
技术标签:
【中文标题】为啥颤振 apk 文件大小要大一些【英文标题】: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
的大小吗?
【问题讨论】:
这可能会帮助你google.com/url?sa=t&source=web&rct=j&url=https://… 【参考方案1】:您将 Flutter apk 构建为调试版还是发布版?这对 apk 文件大小有很大影响。此外,Flutter 和 Ionic 是不同的框架,因此具有不同的 apk 大小并不少见(有关 Ionic 文件大小更小的原因的更多详细信息,您可以查看this,不仅比较大小,还比较性能、易用性等)。
关于你的第二个问题:你可以做些什么来减少 Flutter apk 的大小?
-
删除未使用的包、库或插件
检查应用中包含的资产(图片、视频等)的大小
检查您是否正在编译为发布模式或调试模式。同样,这会有所不同。
如果您要将您的 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 here 和Read more here。
删除不使用的不必要的包/插件(影响不大 不过)。【讨论】:
以上是关于为啥颤振 apk 文件大小要大一些的主要内容,如果未能解决你的问题,请参考以下文章
为啥 exFAT 的“磁盘大小”比 NFTS 的大小要大,因为它们都具有相同的分配单元大小?