flutter - Flutter 的 kernel_blob.bin 是什么?

标签 flutter

每次我做 flutter build 时,我都会得到一个文件更改

ios/Flutter/flutter_assets/kernel_blob.bin

在提交和重建之后,由于这个文件,我遇到了很多冲突。

这个文件是什么?我应该 .gitignore 这个吗?

最佳答案

简短的回答是这个文件是一个 Dart kernel bytecode Flutter 工具链中编译器生成的应用程序代码的表示。当您的 Dart 代码发生变化时,您应该期望构建的 kernel_blob.bin 也会发生变化。

更详细一点,flutter 工具负责管理 Flutter 应用程序的构建管道。由于您的示例是 iOS 示例,因此我将描述 iOS 构建。在通过 flutter build 进行编译期间,该工具执行以下操作:

  1. 将源代码编译为 Dart 内核字节码:flutter 工具定位您应用的主入口点(默认为 lib/main.dart)并将其交给 Dart 内核编译器.内核编译器遍历导入图,并将内核字节码发送到kernel_blob.bin
  2. 将内核编译为 ARM 程序集:在 AOT 构建(配置文件或 Release模式)中,内核字节码随后被传递给 gen_snapshot 工具,该工具在 iOS 上发出 ARM 程序集代码(我们这样做两次,一次针对 32 位,一次针对 64 位)。
  3. 将程序集编译成 iOS 框架:使用 clang 编译器将每个位数的汇编代码编译成 iOS 共享库(.dylib 文件)。然后,我们使用 lipo(Xcode 工具链的一部分)将两个 .dylib 合并为一个通用二进制文件,并将其包装为一个框架,包括版本信息、Info.plist 等。这是作为 App.framework.
  4. 生成 iOS .app 包:您的应用程序的原生位被编译成 iOS .app 包。 App.framework(您的应用)和 Flutter.framework(Flutter 引擎/运行时)都捆绑到应用的 frameworks 目录中。
  5. 将应用安装到设备:.app 文件安装到连接的设备并可选择启动。

您应该在 .gitignore 中忽略此文件(以及 build 目录的其余部分)。

关于flutter - Flutter 的 kernel_blob.bin 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53368586/

相关文章:

flutter - 更改 Flutter 桌面应用程序窗口大小

git - Flutter:如何获取Firebase插件的GitHub主版本

android - Flutter:如何在整个应用程序中设置观察者

flutter | Dio Package ...在后台下载大文件

flutter - 使用 flutter 在特定位置绘制文本

Flutter Animation Controller 参数类型 'ExampleWidget'或 'this'不能赋值给参数类型 'TickerProvider'

flutter PropertyChangeNotifier 忽略 : mixin_inherits_from_not_object

flutter - 无法使用外部小部件设置状态

firebase - 如何使用 Flutter 将 documentID 保存在 Firebase 文档中

flutter - 如何使用 customPaint 添加图像作为背景?