Flutter执行flutter run时因文件被占用导致debug_android_application任务失败,求可行解决方案
这种文件被其他进程占用导致构建失败的问题真的很闹心,我之前开发Flutter项目时也碰到过类似情况,给你整理几个针对性的解决方案,你可以挨个尝试:
排查并关闭占用文件的进程
首先确认是不是有程序正在打开assets/i18n/en.json文件:比如你可能用文本编辑器(像Notepad++、VS Code的预览窗口)打开了这个文件没关,或者IDE的某些插件在后台占用了它。直接关掉这些程序就行。如果找不到具体进程,可以试试重启你的IDE(比如Android Studio/VS Code),很多时候IDE的缓存进程会悄悄锁定文件。清理Flutter和Gradle缓存
先执行以下命令清理项目的构建缓存:flutter clean flutter pub get另外还可以清理Gradle的全局缓存:找到你用户目录下的
.gradle/caches文件夹(比如C:\Users\你的用户名\.gradle\caches),删除里面的所有内容,之后再重新运行flutter run。重启电脑
这虽然听起来是“万金油”方法,但有时候后台的系统进程、杀毒软件或者其他服务会悄悄占用文件,重启系统能彻底释放这些锁定,很多时候能直接解决问题。检查并修改文件权限
右键点击项目的assets/i18n文件夹,选择「属性」→「安全」,确保当前登录用户拥有该文件夹及文件的完全控制权限。有时候权限不足也会导致类似的文件访问失败问题。临时修改构建输出路径
可以在项目的android/app/build.gradle文件中修改构建输出目录,避开原来被锁定的路径:android { buildDir = "${rootProject.projectDir}/../new_build_output" }修改后保存,再运行
flutter run,构建产物会输出到新的目录,绕开原来的文件占用问题。如果可行,之后再改回原来的路径也可以。
如果以上方法都没用,你还可以试试把整个项目复制到另一个磁盘目录(比如从D盘移到E盘),然后在新目录下运行项目,有时候磁盘的文件锁定机制会导致这种跨进程的访问问题,换个目录就能解决。
内容来源于stack exchange

