android - Flutter 大 apk 大小并针对不同 ABI 发布
问题描述
我正在尝试在 Flutter 中构建一个文件大小较小的发布应用程序。昨天发布的 apk 大小约为 16mb,但在我更新颤振后,大小变为 23mb。
经过一番研究,我发现 Flutter 会生成包含所有 ABI 的应用程序包,并且在更新后,新的 API 已添加到 apk 中。
将应用程序添加到 android studio apk 分析器后,我可以在其中看到不同的 ABI,如下所示:
x86_64 7.1mb
arm64-v8a 7mb
armeabi-v7a 6.8mb
我可以用来flutter build apk --split-per-abi
为不同的 ABI 生成 apk。现在的问题是,arm64-v8a
系统可以运行x86_64
apk吗?(或其他)。或者这些 ABI apk 版本中的任何一个都可以在所有设备上运行吗?
我不会在应用商店发布我的应用,我只是将它放在我的客户网站上,他们的客户会从那里下载它(或者它会通过电子邮件发送给他们,...)。所以我需要一个适用于所有 android 设备的版本,而完整的捆绑版本太大(23mb)。
编辑:
我刚刚x86_64
在设备上测试了构建arm64-v8a
,但没有安装。但该armeabi-v7a
版本确实安装了。
解决方案
我做了一些研究并在不同设备上尝试了发布版本,结果如下:命令是:flutter build apk --split-per-abi
- x86_64 apk 版本不适用于任何其他设备。我找不到 x86_64 设备,但我认为它可以在 x86_64 设备上运行!
- arm64-v8a apk 版本安装在 arm64-v8a 上,但不会安装在 armeabi-v7a 设备上。(armeabi-v7a 早于 arm64-v8a)。
- armeabi-v7a apk 版本适用于 armeabi-v7a 和 arm64-v8a 设备。我没有找到 x86_64 设备,但我认为它也可以在此设备上运行。
摘要:较新版本的 ABI 可以运行较旧的 apk 版本。顺序是:armeabi-v7a 然后 arm64-v8a 然后 x86_64。
例如,armeabi-v7a 将在所有设备上安装和工作,如果您构建和 arm64-v8a apk,它将不会安装在 armeabi-v7a 设备上。
还有其他不再使用的架构(mips、mips64、armeabi),默认情况下,Flutter 不会在构建中包含它们。
X86 和 X86_64 架构适用于数量非常有限的设备,但可能对在模拟器中进行调试很有用。
这是我研究和测试的结果。我决定只使用 armeabi-v7a,所以 apk 大小将是 8mb 而不是 23mb。
如果其他人有这个问题/麻烦,我希望这会有所帮助:)。
推荐阅读
- r - 根据一个因素随机播放数据帧行
- python - 熊猫使用函数突出显示带有条件的excel列
- parallel-processing - 并行:像 pblapply 一样使用 parLapply 时模仿监控
- javascript - 尝试获得平均值时变得不确定
- python - 在 Python 中非阻塞启动并发协程
- javascript - zopim : 添加标题属性
- javascript - 查找所有长度为 n 的 m 个数组组合的集合
- wpf - How to prevent WPF Gridviewcolumn collapse fully
- python - Passing file and data to requests, error at every turn
- intellij-idea - 列出 IntelliJ 模块中的所有错误