我用dart制作了一个控制台应用程序,可以计算2个数字并将其打印出来大小约5 MB!
下载链接(仅Windows)https://drive.google.com/open?id=1sxlvlSZUdxewzFNiAv_bXwaUui2gs2yA
这里是代码
import 'dart:io';
int inputf1;
int inputf2;
int inputf3;
void main() {
stdout.writeln('Type The First Number');
var input1 = stdin.readLineSync();
stdout.writeln('You typed: $input1 as the first number');
sleep( Duration(seconds: 1));
stdout.writeln('\nType The Second Number');
var input2 = stdin.readLineSync();
stdout.writeln('You typed: $input2 as the second number');
sleep( Duration(seconds: 1));
inputf1 = int.parse(input1);
inputf2 = int.parse(input2);
inputf3 = inputf1 + inputf2;
print('\nfinal answer is : $inputf3');
sleep( Duration(seconds: 10));
}
之所以使用较大的可执行文件,是因为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
。
这是因为原生dart应用是通过合并渲染引擎制作的...我知道这对所有基于dart的flutter应用都是正确的。也看这个https://medium.com/@rajesh.muthyala/app-size-in-flutter-5e56c464dea1