gpt4 book ai didi

dart - Flutter 应用程序 "documents and data"磁盘使用率在 iOS 上过高

转载 作者:行者123 更新时间:2023-12-05 03:36:17 26 4
gpt4 key购买 nike

我用 Flutter 编写了一个非常简单的应用程序,适用于 iOS、Android 和网络。

最近,我意识到如果我浏览我的 iPhone 上的“存储”设置页面,我的产品应用程序(因为它在 App Store 上分发)大约有 500 MB。其中大部分来自“文档和数据”部分,应用程序本身并不庞大:

存储页面
enter image description here

这是出乎意料的,因为我唯一特意存储的是一个小型 sqlite 数据库,在我的例子中大约是 30 KB。

正在关注 this guide from the Apple support page ,我能够下载我的应用程序的容器,它确实大约有 500 MB。事实证明,大部分权重来自 tmp 文件夹内部,如 du -sh AppData/tmp/* 的输出所示:

  0B    AppData/tmp/count0fSKCX
0B AppData/tmp/count1N2yFY
32K AppData/tmp/count1tKqnr
0B AppData/tmp/count2BxlSk
24K AppData/tmp/count2VKOVX
0B AppData/tmp/count2tnzwn
[...]
0B AppData/tmp/count8kl1hK
53M AppData/tmp/count8kqOke
0B AppData/tmp/count8ssdC7
[...]
0B AppData/tmp/countZHwkA9
26M AppData/tmp/countZHx1v8
53M AppData/tmp/countZKP9JU
0B AppData/tmp/counta5fYmx
[...]

如果我看一下其中一个 50 多 MB 的巨大文件夹中的内容,以下是占用如此多空间的内容:

du -sh AppData/tmp/countZKP9JU/count/*

26M AppData/tmp/countZKP9JU/count/main.dart.dill
20K AppData/tmp/countZKP9JU/count/main.dart.incremental.dill
26M AppData/tmp/countZKP9JU/count/main.dart.swap.dill

我没能找到关于这些文件的有用文档,因为我不确定要查找什么:是我的 Dart 配置、Flutter 配置、App 配置中的问题……?各位大神能赐教吗?

编辑:这是一些可能有用的版本信息

  • Flutter 2.5.1 • channel 稳定 • https://github.com/flutter/flutter.git
  • 框架 • 修订版 ffb2ecea52(5 周前) • 2021-09-17 15:26:33 -0400
  • 引擎 • 修订版 b3af521a05
  • 工具 • Dart 2.14.2
  • iOS 版本:15.0.2

最佳答案

如果有人遇到同样的问题,我最终会在启动时编写自己的清理逻辑,调用 getApplicationDocumentsDirectory().parent.list() 然后删除 tmp 子文件夹(如果存在)。

我不知道这最终是否有必要,因为这个 tmp 文件夹无限增长可能只是因为我一直在手机上安装开发版本。但无论如何,这个清理步骤可能不会造成伤害。

编辑:这是代码。随意改进它,我认为它可能会在其他平台上记录异常(但不会崩溃):

import 'package:path_provider/path_provider.dart';

[...]

@override
void initState() {
_cleanUpTemporaryDirectory();
super.initState();
}

[...]

_cleanUpTemporaryDirectory() async {
final documentsDirectory = await getApplicationDocumentsDirectory();
documentsDirectory.parent.list().forEach((child) async {
if (child is Directory && child.path.endsWith('/tmp')) {
print('Deleting temp folder at ${child.path}...');
try {
await child.delete(recursive: true);
print('Temp folder was deleted with success');
} catch (error) {
print('Temp folder could not be deleted: $error');
}
}
});
}

关于dart - Flutter 应用程序 "documents and data"磁盘使用率在 iOS 上过高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69672701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com