Cursor 与 Android Studio 联调时 `R.jar` 删除失败(Windows 文件锁)
本文分析了Windows系统下Android开发时R.jar文件被锁导致构建失败的常见原因及解决方案。主要发现Cursor IDE的Kotlin语言服务(fwcd.kotlin)会长期占用R.jar文件句柄,导致Android Studio构建时无法覆盖该文件。诊断方法包括使用资源监视器查找占用进程,通过PowerShell追溯父进程来源。解决方案建议在Cursor中禁用fwcd.kotlin扩展
Cursor 与 Android Studio 联调时 R.jar 删除失败(Windows 文件锁)
本文说明在 Windows 上双 IDE 开发时,compileDebug 等任务报错 无法删除 / 覆盖 R.jar 的原因、如何复现、如何定位与如何解决。
1. 问题描述
在 Cursor 中编辑代码后,切换到 Android Studio 运行或构建工程时,Gradle 可能失败,典型日志包含:
- 删除或覆盖
项目吗\build\intermediates\...\R.jar失败 - 提示文件被占用、访问被拒绝等(与业务代码无关)
表象: 在 Android Studio 中重试 Sync / Run 往往无效;关闭 Cursor 后 再在 Android Studio 中构建即可成功。
2. 根因概要
在 Windows 上,失败常见有两类 不同的 占用者:
| 占用进程 | 常见来源 | gradlew --stop 是否有效 |
|---|---|---|
| Gradle Daemon / Worker | 在 Cursor 集成终端或其他终端执行过 gradlew,后台 Java 仍持有 build 下文件 |
通常有效 |
| Cursor 的 Kotlin Language Server(java.exe) | 扩展 fwcd.kotlin 拉起的语言服务进程,按类路径读取 build 中的 R.jar 并长时间占句柄 |
无效(需停语言服务或关 Cursor) |
此前已通过 资源监视器 → 关联的句柄 搜索 R.jar,并结合 PowerShell 查询确认:占用 R.jar 的 java.exe 其父进程为 cmd.exe,命令行指向:
%AppData%\Cursor\User\globalStorage\fwcd.kotlin\langServerInstall\...
即 Kotlin 插件(fwcd)的语言服务 导致锁文件,而非 Gradle 本身。
4. 诊断方法
4.1 谁占用了 R.jar
Win + R→ 输入resmon→ 打开 资源监视器。- 切到 CPU 选项卡 → 关联的句柄 搜索框输入
R.jar。 - 记下占用进程的 名称 与 PID(常见为
java.exe)。
4.2 判断是 Gradle 还是 Cursor Kotlin 语言服务
在 PowerShell 中(将 15464 替换为实际 PID):
Get-CimInstance Win32_Process -Filter "ProcessId=15464" |
Select-Object Name, ProcessId, ParentProcessId, CommandLine
查看 ParentProcessId,再查父进程:
Get-CimInstance Win32_Process -Filter "ProcessId=<ParentProcessId>" |
Select-Object Name, ProcessId, CommandLine
- CommandLine 中含
GradleDaemon、gradle、GradleWorkerMain等 → 多为 Gradle 相关。 - CommandLine 中含
fwcd.kotlin、langServerInstall、.cursor用户目录 → Kotlin 语言服务(Cursor) 占用。
5. 解决方案
针对 fwcd.kotlin 语言服务(与本仓库现象一致时推荐)
- 在 Cursor 中打开扩展视图,找到 Kotlin(发布者 fwcd)。
- 选择 Disable (Workspace),仅当前工作区禁用,避免在本 Android 工程中启动会锁
R.jar的语言服务。 - 日常编译与运行以 Android Studio 为主;Cursor 用于编辑时,若无需完整 Kotlin LS,工作区禁用通常无副作用冲突。
若必须保留该扩展,可在从 Cursor 切到 Android Studio 做完整构建前 退出 Cursor(已验证可释放句柄)。
6. 小结
| 项目 | 说明 |
|---|---|
| 问题 | Windows 下 R.jar 无法删除/覆盖,导致 Gradle 失败。 |
| 常见真凶之一 | Cursor fwcd.kotlin 语言服务的 java.exe 长期占用 build 内的 R.jar。 |
| 与「关 Cursor 就好」的关系 | 退出 Cursor 会结束该语言服务进程,句柄释放,Android Studio 即可正常构建。 |
| 推荐操作 | 本仓库在 Cursor 中 工作区禁用 fwcd Kotlin;Gradle 侧切换 IDE 前执行 gradlew --stop。 |
更多推荐



所有评论(0)