4

背景

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

做了什么

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

实际问题

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

更新/新发现

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

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

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

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

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

4

2 回答 2

3

我找到了解决方案。

主要问题是该应用程序正在寻找一些依赖项,但无法找到它们。正如这里提到的。

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

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

解决方案:

  • 如果它是一个 dll,您应该将其添加到发布文件夹中。就我而言,它是 sqlite3.dll
  • 如果是其他资产,那么您应该始终使用相对路径。
于 2021-09-17T10:34:54.063 回答
1

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

flutter build windows不带.exe运行flutter pub run msix:create,然后运行创建的 .exe 文件,看看它是否工作。

顺便说一句,这里提到这个问题:https ://github.com/flutter/flutter/issues/74507

在这里(“最大化”问题):在最大化和最小化颤动桌面应用程序时出现黑屏

于 2021-09-14T07:19:49.983 回答