Android Flatter如何将自己的DartVM用于本机应用程序

Android Flatter如何将自己的DartVM用于本机应用程序,android,dart,flutter,Android,Dart,Flutter,我听说Dart使用自己的DartVM。 因此,Flatter可以在开发应用程序时使用JIT(用于热重新加载)和AOT将后者构建为“本机”应用程序(.apk/.ipa) 根据两种平台(Android/iOS)的标准: 提前(AOT)编译到本机ARM库中 但是,如果应用程序已经通过Dalvik/ART运行,那么Flatter如何在Android上使用自己的DartVM呢?虚拟机是内置在我们的.apk中的吗?这样它就可以传送到真正的Android设备上了吗 如果DartVM不用于最终构建,那么GC的东

我听说Dart使用自己的DartVM。 因此,Flatter可以在开发应用程序时使用JIT(用于热重新加载)和AOT将后者构建为“本机”应用程序(.apk/.ipa)

根据两种平台(Android/iOS)的标准:

提前(AOT)编译到本机ARM库中

但是,如果应用程序已经通过Dalvik/ART运行,那么Flatter如何在Android上使用自己的DartVM呢?虚拟机是内置在我们的.apk中的吗?这样它就可以传送到真正的Android设备上了吗

如果DartVM不用于最终构建,那么GC的东西呢?“颤振”倾向于创建许多短命的对象,这对Dart虚拟机很好,但对艺术型虚拟机不太好。

在两种不同的模式下使用Dart虚拟机:

  • 在开发时以调试模式运行,
    flatter run
    命令监视主机文件系统中Dart源的更改,当它检测到这些更改时,会将Dart源快速编译为(中间)格式。然后通过热重新加载将其同步到设备上运行的引擎,并在JIT模式(Android)或解释模式(iOS)下执行
  • 在概要文件或发布模式下运行时,Dart源代码首先被编译成内核中间形式,然后通过
    gen_snapshot
    运行,它会发出AOT ARM机器代码,然后链接到最终的应用程序中。你可以在我们的维基上找到详细的解释

注意到,java编写的一个平台绑定的集合,通过JNI与引擎进行接口,但颤振引擎的核心是用C++编写的,并且用NDK构建,这样的比特不依赖于Dalvik /ART。