Skip to content

当你看到 "Suppressed: java.lang.Exception: Storage[...] registration stack trace" 这个错误时,别慌,这通常是 Gradle 缓存出了点小问题。

具体来说,是你在编译 Kotlin 代码(尤其是在用 device_info_plus 这类插件)的时候,Gradle 的缓存机制卡住了。大部分情况是因为文件被锁了,或者缓存本身坏掉了。

下面教你几招搞定它:

招式一:干掉 Java 进程 (最常用)

这是最常见也最好用的法子。多半是上次编译的 Gradle 进程或者某个 Java 实例还没死透,把缓存文件给霸占了。

  • Windows 用户: 打开 任务管理器 -> 详细信息 标签页。
  • macOS 用户: 打开 活动监视器,然后搜 "Java"。

找到所有叫 java.exe (Windows) 或 java (macOS) 的进程,然后把它们全都结束掉。如果不确定哪个是,可以看看哪个占内存比较多,或者干脆一个个地试着关,看看问题解决了没。把 Gradle 守护进程(Gradle Daemon)对应的那个 Java 进程干掉,效果通常立竿见影。

招式二:清理并重建项目

确保没有 Java 进程捣乱之后,给你的项目来个“大扫除”。

在你的项目根目录里,依次敲下面这两个命令:

bash
flutter clean
flutter pub get

然后,重新跑一下你的项目:

bash
flutter run

或者,你也可以只编译特定的平台:

bash
flutter build apk
flutter build ios

招式三:清除 IDE 缓存 (IDE 用户专属)

如果你用的是 Android Studio 或者 VS Code,IDE 自己也有一套缓存,有时候也会跟着捣乱。

  • Android Studio: 点击菜单栏的 File -> Invalidate Caches / Restart...,然后选 Invalidate and Restart
  • VS Code: 简单粗暴,直接重启 VS Code 就行。

终极绝招:手动删除 Gradle 缓存 (高级玩法)

如果上面几招都不灵,那就只能上绝招了:手动删掉 Gradle 的缓存。

  • 根据错误信息里提到的路径,找到那个出问题的缓存文件夹。比如 F:\Project\App\NoteApp-colorScheme\build\device_info_plus\kotlin\compileReleaseKotlin\cacheable\caches-jvm
  • 直接把整个 caches-jvm 文件夹删掉。

下次你编译的时候,Gradle 会自动重新生成一个新的缓存。


按照这几步操作下来,那个烦人的文件锁定问题应该就能解决了,你的项目也能顺利编译通过了。