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