我用dart制作了一个控制台应用程序,可以计算2个数字并将其打印出来 大小约为5 MB!
下载链接(仅Windows)https://drive.google.com/open?id=1sxlvlSZUdxewzFNiAv_bXwaUui2gs2yA
这是代码
PeterParker
True
Peter-Parker
True
Peter-P-arker
False
Peter
False
PeterParker-
False
-PeterParker
False
1PeterParker
False
Peter Parker
False
PeterParkerSpiderMan
False
答案 0 :(得分:4)
使用大型可执行文件的原因是因为dart2native
编译器并非真正使您可以直接从头在机器上运行的可执行文件。而是将dartaotruntime
可执行文件与AOT编译的Dart程序一起打包。
dartaotruntime
包含所有Dart运行时库,并且dart2native不会从dartaotruntime
中删除任何内容(由于它是二进制文件,因此也很困难),因此即使您仅添加两个,也可以获得整个运行时数字。
但是还不错,因为每个程序都要付出一次代价。因此,如果您编写一个非常大的程序,则dartaotruntime
仍然只包含一次。
但是,如果您要在一个软件包中部署许多小程序,我建议您将-k aot
参数添加到dart2native
,以便它代替可执行文件将生成一个.aot
文件,该文件然后,您可以运行dartaotruntime <program.aot>
。
这会使您的部署更加复杂,但是您只需要提供dartaotruntime
二进制文件以及多个.aot
文件即可。
我已经在Windows 64位Dart上将您的程序编译为.exe
和.aot
。版本2.8.2,因此您可以看到大小差异:
同样,-k aot
将仅为您部署单个可执行文件而不会节省任何磁盘空间。但是,如果您的项目包含许多程序,则可以节省很多钱。
还应注意,.aot
文件就像.exe
文件那样依赖于平台。并且您应该使用与dartaotruntime
相同的版本来编译文件。
答案 1 :(得分:-2)
这是因为原生dart应用是通过合并渲染引擎制作的...我知道这对所有基于dart的flutter应用都是正确的。 也看看这个https://medium.com/@rajesh.muthyala/app-size-in-flutter-5e56c464dea1