Linux Fultter 桌面 - 无法从已编译的可执行文件运行应用程序,flutter 运行正常

Posted

技术标签:

【中文标题】Linux Fultter 桌面 - 无法从已编译的可执行文件运行应用程序,flutter 运行正常【英文标题】:Linux Fultter desktop - unable to run app from compiled executable, flutter run works 【发布时间】:2020-09-16 21:59:33 【问题描述】:

颤振医生输出:

[✓] Flutter (Channel master, 1.19.0-2.0.pre.193, on Linux, locale pl_PL.UTF-8)
  Flutter 版本 1.19.0-2.0.pre.193 位于 /home/michal/android/flutter
  框架修订 fed18fc433(3 小时前),2020-05-29 03:43:01 -0400
  引擎修订版 17737e6fd4
  Dart 版本 2.9.0(内部版本 2.9.0-11.0.dev 6489a0c68d)

[✓] Android toolchain - 为Android设备开发(Android SDK版本
    29.0.0-rc2)
  Android SDK 位于 /home/michal/Android/Sdk
  平台 android-29,构建工具 29.0.0-rc2
  ANDROID_HOME = /home/michal/Android/Sdk
  Java 二进制文件位于:/home/michal/android/studio/jre/bin/java
  Java 版本 OpenJDK 运行时环境(构建
 1.8.0_212-release-1586-b4-5784211)
 接受所有 Android 许可证。

[✓] Chrome - 为网络开发
  google-chrome 上的 Chrome

[✓] Linux 工具链 - 为 Linux 桌面开发
  clang 版本 9.0.1-12
  cmake 版本 3.16.3
 忍者版本 1.10.0

[✓] Android Studio(3.6版)
  Android Studio 位于 /home/michal/android/studio
  Flutter 插件版本 45.1.1
  Dart 插件版本 192.8052
  Java 版本 OpenJDK 运行时环境(构建
 1.8.0_212-release-1586-b4-5784211)

[✓] VS 代码(版本 1.45.1)
  VS 代码位于 /usr/share/code
  Flutter 扩展版本 3.8.1

[✓] 连接设备(4 个可用)
  为 x86 64 构建的 Android SDK • emulator-5554 • android-x64 • Android 10
 (API 29)(模拟器)
  Linux • Linux • linux-x64 • Linux
  Web 服务器 • web-server • web-javascript • Flutter
 工具
  Chrome • chrome • web-javascript • Google
 Chrome 84.0.4147.21 开发版

• 未发现任何问题!

我的应用程序编译成功,我可以运行它,flutter run -d Linux 没有任何问题。但是,当我尝试运行直接编译的可执行文件时,这不起作用,在这种情况下,我收到错误消息:

embedder.cc (781):“FlutterEngineInitialize”返回“kInvalidArguments”。未在 AOT 模式下运行,但无法解析内核二进制文件。
Flutter引擎启动失败:错误2
创建窗口失败。

编译命令: flutter build linux

任何建议如何让它作为独立应用程序运行?

【问题讨论】:

你用来生成可执行文件的命令是什么? 问题已更新 来自documentation Building 除了链接 Flutter 库之外,您的应用程序还需要捆绑您的 Flutter 资产(由 flutter build bundle 创建)。在 Windows 和 Linux 上,您还需要来自 Flutter 引擎的 ICU 数据(在 Flutter 树的 bin/cache/artifacts/engine 目录下查找 icudtl.dat)。 【参考方案1】:

听起来您正在尝试运行位于构建输出顶层的可执行文件。您需要在构建目录的 bundle 子目录中运行副本,该目录包含正确的相对位置中的所有支持文件。

一旦 Linux 进一步发展,如何使用构建目录中的内容的详细信息将记录在某处。

任何建议如何让它作为独立应用程序运行?

bundle 目录作为一个整体是独立的应用程序。如果您的意思是将所有内容都放在一个可执行文件中而不需要任何支持文件,那是不可能的。

【讨论】:

你是对的。我错过了,因为在 Windows 上没有“捆绑”目录,所以我错误地认为 Linux 可执行文件也是***

以上是关于Linux Fultter 桌面 - 无法从已编译的可执行文件运行应用程序,flutter 运行正常的主要内容,如果未能解决你的问题,请参考以下文章

Fultter 实战No toolchains found in the NDK toolchains folder for ABI arm-linux-androideabi

在 Chrome 或 Firefox 中从已关闭的 Web 应用程序发送桌面通知?

从已编译的应用程序生成单个 exe 文件

从已编译的 apk 中恢复丢失的代码

如何从已编译的 Electron 应用程序中获取源文件?

powershell Powershell脚本,用于从已编译的twine游戏中删除保存加密代码。