首页 > 解决方案 > Flutter Dart 是编译为原生还是编译为 Kotlin 或 Swift?

问题描述

打开 APK 文件后,我在 Kotlin 中找到了代码,而不是在 Dart 中。打开 IPA 文件后,发现 Swift 代码而不是 Dart。

Dart 代码会发生什么变化?是否转译为原生 SDK 语言?

如果是这样,libflutter.so 和 libapp.so 有什么用?假设应用程序现在是原生的,为什么它仍然需要 Dart 运行时?

标签: androidiosfluttercross-platform

解决方案


Flutter是 Google 开发的 SDK。它是一个 Dart 库,旨在为 GUI 提供原生外观。这是通过 Flutter Engine(使用Google Skia)实现的,上次我看到的是用 C++ 构建的。但是,对本机平台的接口调用是通过其特定的 SDK(以及本机语言,例如 Swift 和 Kotlin/Java)完成的。

Dart既是一种编程语言,也是一种平台(Dart VM)。它可以以多种方式运行:

  1. Dart 虚拟机:在 Windows、macOS 和 Linux 上,使用 Just-in-Time。
  2. Native:使用dart2native,可以将 Dart 编译为独立的、单个文件的本机可执行文件。
  3. JavaScript:使用源到源编译器,Dart 代码转换为 JavaScript,并且可以在大多数 Web 浏览器中运行。
  4. AOT / Ahead-of-Time:这是完全原生于移动平台(iOS / Android),主要用于交付到应用商店。

在引擎盖下,有很多坚实的魔法正在发生。它可能包括将一些特定于 GUI 的相关代码转换为原生代码。享受!


推荐阅读