有没有办法在停止调试会话后强制保留上次热重载的更改?

Is there a way to force changes from the last hot reload to persist after stopping debug session?

在 Android Studio 结束 debug/run 会话后 and/or 从计算机上拔下我的 phone 并重新启动应用程序,本地安装的应用程序似乎没有保存上次热重载的更改。

我注意到了几次并决定 运行 做一个实验,有一个简单的页面并在单独的热重载中引入几个简单的 Text 小部件(由我按 Ctrl+S 触发) ,并且确实在重新启动应用程序后(拔掉电源后)只出现了两个 Text 小部件中的第一个,这表明最后一次热重载的更改确实丢失了。

我不确定这是设计使然还是我的开发环境中的某些部分无法正常工作。

无论哪种方式,我都希望能够轻松地拔掉插头并保留最后的更改,这样当我离开我的计算机与其他开发人员讨论我的最新更改时,我们可以查看最新的更改。

P.S。我知道我可以在每个开发会话结束时引入一个虚拟更改并拔掉插头,以便所有 actual 更改都保留下来,但我想知道是否还有另一个更优雅的解决方案而不是添加垃圾代码。

热重载通过将您的最新更改上传到可调试进程来工作。源代码被编译成内核文件并发送到移动设备的 Dart VM。但是它们被加载到内存中。当您断开调试进程并终止您的应用程序时,在您再次打开后,它将加载您磁盘中最后一次真实编译的库。

不幸的是,应用更改并将它们同时保存在内存和磁盘中实际上会使整个过程的效率大大降低并且目前不可用。

如果您想 运行 您的应用程序而不重新编译它,您可以:

  1. 连接您的设备
  2. 打开应用的旧安装版本
  3. 在 IDE 上单击带箭头的小错误图标(参见屏幕截图)(或按两次 shift 然后键入“将调试器附加到 Android 进程”)
  4. 点击确定

请注意:如果您更改了本机代码,此方法将无法正常工作,例如安装通过平台通道添加功能的第三方库需要您重新编译应用程序。

希望这对您有所帮助。在 VSCode.

上也有同样的事情

查看更多信息:https://docs.flutter.dev/development/tools/hot-reload

尝试一下;

  1. 运行 应用
  2. 在控制台上插入 flutter install

告诉我这是否适合你