【问题标题】:Flutter Windows Desktop app gets stuck on white screen after msix installation安装 msix 后,Flutter Windows 桌面应用程序卡在白屏上
【发布时间】:2021-11-06 15:50:16
【问题描述】:

背景

我刚刚为 Windows 机器开发了我的第一个 Flutter 桌面应用程序。该应用程序在开发/调试时运行良好,但我正在尝试将其作为发布模式下的应用程序进行测试。

做了什么

  1. 我使用 pub msix 创建了一个 msix。
  2. 对于签名,我已经尝试了我的 自己的证书和msix自带的测试证书 默认打包。
  3. 我已经尝试过稳定和测试渠道。

实际问题

当我在其他系统上安装应用程序时(甚至在我调试应用程序的实际系统上)。我可以成功安装 msix 设置我可以在应用程序中看到我的应用程序,但是当我尝试打开它时,它卡在空白/白色屏幕上。没有呈现 UI。如果我尝试最大化窗口,它会进入 App 无响应状态。 任何帮助将不胜感激。 提前致谢。

更新/新发现

浏览了Yehuda Kremer提供的链接,拉了几天的头发,在这条推文中找到了答案 https://twitter.com/FilledStacks/status/1436280577439715338?s=20

所以主要问题是应用程序使用了一些在其他机器上不起作用的绝对路径(发布后)

1- 我的应用程序正在使用数据库,因此我确保该数据库路径是相对于应用程序文档目录的。 2-现在构建也引用了一些依赖项,它们的路径也是绝对的。我注意到cmake_install.cmake 中有一个标志CMAKE_INSTALL_LOCAL_ONLY,但该标志没有在任何地方设置。

这是flutter build windows -v的日志 https://pastebin.com/LAeshUMY

-- 现在我正在寻找一种将所有路径转换为相对路径的正确方法,以便构建可以安装在不同的机器上,而不仅仅是本地安装。

【问题讨论】:

    标签: flutter flutter-desktop flutter-channel flutter-release


    【解决方案1】:

    我找到了解决办法。

    主要问题是应用程序正在寻找一些依赖项,但无法找到它们。如上所述here

    在release模式下没有发现的原因可能是以下之一,

    • 您正在使用系统中特定路径上可用的某些 dll(依赖于 dll 的程序包),但是当您发布应用程序时,该(绝对)路径不再有效。
    • 您正在添加一些具有绝对路径的资产(仅适用于您的系统)。

    解决方案:

    • 如果是 dll,您应该将其添加到发布文件夹。就我而言,它是 sqlite3.dll
    • 如果是其他资产,则应始终使用相对路径。

    【讨论】:

      【解决方案2】:

      你提到了msix包,看看问题出在app还是打包过程

      在没有flutter pub run msix:create的情况下运行flutter build windows,然后运行创建的.exe文件看看它是否工作。

      顺便提一下这个问题:https://github.com/flutter/flutter/issues/74507

      这里(“最大化”问题):Black screen appears on maximizing and minimizing flutter desktop app

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 2022-01-16
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 1970-01-01
        相关资源
        最近更新 更多