即使缩小图像,Flutter App 大小仍然相同
Posted
技术标签:
【中文标题】即使缩小图像,Flutter App 大小仍然相同【英文标题】:Flutter App size is still the same even after scaling down images 【发布时间】:2021-11-17 22:27:49 【问题描述】:我正在玩弄颤振并构建一个简单的测验应用程序。该项目几乎已准备好在 Play 商店上发布,并且有几处需要修复。但是,我尝试了新的颤振--analyze-size
命令,发现我可以通过缩小图像来进一步减小文件大小。我缩放了图像(它显着减小了尺寸)并替换了原始文件。
然后我运行flutter clean
和flutter 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
【问题讨论】:
【参考方案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】:确保您缩小尺寸的图像是您的flutter assets 的一部分。如果它们未在 pubspec.yml
中列出,则它们不是您的 apk 文件的一部分。如果它们不是您的 apk 文件的一部分,那么无论您减小什么大小,都不会影响 apk 大小。您也不会在分析结果文件.json
中看到任何差异。
仔细检查您的输出 apk 文件中图像的大小是否确实发生了变化。当您运行 --analyze-size
时,它还会创建 apk。在 Android Studio 中,您可以打开 apk 并检查 apk 中打包的图像大小。
有时 APK 大小保持不变,但可下载的大小会发生变化。我也不确定这里发生了什么,但只要减小 apk 中的实际图像大小并减小最终用户的下载大小,那么初始目的已经达到,所以我继续。
【讨论】:
【参考方案4】:您应该按照以下步骤来减小 FLutter 应用程序的大小:
-
使用 google-fonts 包
使用
flutter build apk --split-per-abi
构建apks
从捆绑包中删除不需要的图标。为此,请在您的 apk 构建命令中添加 --no-tree-shake-icons
标志
使用.svg 格式图标
在release
块内的/android/app/build.gradle中使用shrinkResources true
删除未使用的资产/包
使用缓存图像而不是使用来自资产的图像
使用 progaurd(here)。
【讨论】:
【参考方案5】:重命名图像(添加 1 或其他一些小东西),清理,重建,然后重命名回原始名称,清理,重建。
Flutter 可以缓存文件名。
【讨论】:
【参考方案6】:您可以尝试以下操作以确保不会发生这种情况,
按顺序:
运行flutter clean
手动删除/build
文件夹,与flutter clean
基本相同
正如@Guillem 已经说过的那样,可能存在任务管理器故障restarting machine
应该可以解决问题。
flutter pub cache repair
基本上会触发与发布规范相关的缓存,但在您的情况下触发缓存刷新可能会有所帮助,请尝试一下。
Backup All image assets
某处并从项目中删除它们只是为了在没有它的情况下构建它,然后在错误时在项目中包含图像并再次尝试上述步骤。
让我知道这是否对你有用。
【讨论】:
以上是关于即使缩小图像,Flutter App 大小仍然相同的主要内容,如果未能解决你的问题,请参考以下文章
Swift 如何使 UIView 大于手机屏幕-我们可以让它的大小与图像大小相同然后缩小
Flutter FFMPEG 根据视频大小增加处理时间,即使只切割相同大小