有一个Android应用程序是实现与ionic4
和我在其他应用程序中实现相同的功能写在flutter
但ionicapk
文件大小只有13MB
。具有类似功能的flutterapk
(实现仍然不完整)文件大小为21MB
。
我有以下问题:
>
我想知道是什么让我的apk变得更大?
这可能与代码实现或其他方面有关吗?
有人帮我减少应用程序flutter
大小吗?
请注意以下几点:
如果使用flatter build apk
构建apk,它将同时包含arm-32和arm-64 apk(构建apk时,哪个flatter将在conole中显示)。如果你正在构建应用程序包,这不是一个问题,它的大小要小得多。
为了避免一个包含arm-32和arm-64的平面apk,您可以使用以下两个命令分别构建它们:
flutter build apk --target-platform=android-arm
以上将产生arm-32
位apk。转到项目-
然后在pubspec.yaml中增加版本代码,下一个
flutter pub get
并执行以下操作:
flutter build apk --target-platform=android-arm64
上面会产生
arm-64
位apk。转到project-
然后您可以分别提交两个apk(先提交较低的apk版本)。
由于必须通过增加版本代码来运行两个命令,所以flatter通过这个命令(flatter)使它变得更容易
来自doc:
从命令行:
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
标志将生成一个fat APK,其中包含为所有目标abi编译的代码。这样的APK比拆分后的APK更大,导致用户下载不适用于其设备架构的本机二进制文件
在这里阅读更多。
此外,请检查以下内容:
正如其他答案提到的那样,删除所有不必要的资产(图像、字体和文件)。
如果你有太多的字体,这将严重影响apk大小和flutter也做了一个解决方案,通过创建一个包,让你从谷歌字体库(真棒包,让你访问这么多的字体和灵活性,在任何地方使用)。在这里获取包裹并在这里阅读更多。
删除不使用的不必要的包/插件(虽然没有太大影响)。
你是否构建了Flutter apk作为调试或发布?这对apk文件大小有很大影响。此外,Flutter和Ionic是不同的框架,所以拥有不同的apk大小并不罕见(有关为什么Ionic的文件大小较小的更多细节,您可以检查一下,不仅比较大小,还比较性能、易用性等)。
关于你的第二个问题:你能做些什么来减少Flutter apk的大小?
我有大约500MB的H2数据库。 H2的版本是1.2.147。 数据库的存储引擎是PageStore。 JDBC URL如下所示。 jdbc:h2:file://C:/h2/client;如果存在=真;MVCC=真;数据库\u事件\u侦听器。H2DBMonitor';AUTO_SERVER=TRUE;对数=2 我做了一个版本的H2 1.4.192没有改变数据库的存储引擎。 当我的客户使用数据库时,
我正在学习Java I/O。因此,使用缓冲流可以减少读取或写入所需的时间,因为如果使用普通的FileInputStream,每次调用读取时都会获取一个字节,但如果使用缓冲区,则会获取指定大小的数据并将其存储在内存中。所以我试着在实践中看到这一点。 我已将BufferedInputStream的缓冲区大小设置为512,8192,65536。每次需要87秒才能完成执行。所以我尝试使用FileInput
我有一个h2数据库文件,文件大小已经增长到5GB。我删除了一些数据以缩小文件的大小。但即使从数据库中删除了一半记录,文件大小仍然保持不变。 我已经尝试了以下所有选项来减少数据库大小,但没有一个对我有用。 我的连接字符串如下所示: 注: 我们正在结清我们已经开始的交易 文件中没有5GB的数据 有人能给我建议一些解决方法或修复方法来减少我的数据库大小吗
问题内容: 限制Java JVM上Permgen空间大小的目的是什么?为什么不总是将其设置为等于最大堆大小?Java为什么默认为这么少的64MB?他们是否正在试图通过这种方式迫使人们注意代码中的Permgen问题? 如果我的应用使用85MB的permgen,那么将其设置为96MB可能是安全的,但是如果它只是主堆的一部分,为什么还要设置得如此之小呢?允许JVM使用堆允许的PermGen效率不高吗?
在堆上分配内存时,唯一的限制是可用RAM(或虚拟内存)。它产生Gb的内存。 那么,为什么堆栈大小如此有限(大约1 Mb)?什么技术原因阻止您在堆栈上创建真正大的对象? 更新:我的意图可能不清楚,我不想在堆栈上分配巨大的对象,也不需要更大的堆栈。这个问题只是纯粹的好奇心!
我使用spring Boot创建了压缩响应的配置。下面是我的配置。 问题是所有的响应都有header[Content-Encoding gzip],即使响应大小小于min响应大小,默认为2048字节。