在Gradle build失败之后时,有时候强制关闭AndroidStudio,再次打开build时,会提示各种.lock 文件问题,删除了一个还有下一个,而且路径不一样。
一般情况下是这两个文件夹下的lockfile影响继续build
- %GRADLE_HOME%/caches 下的 (安装gradle的位置,一般会保留你下载的库)
- 项目目录下 (项目build过程产生的文件,缓存等)
- /.gradle/
- /.buildCahceDir/ 下
常规解决方案
- 清除所有的 .lock 文件; 根据我的经验 可能有几十上百个,需要挨个去删除。当然对于gradle下的,可以直接删除caches文件夹,但是你会发现,再次build会重新下载jar包等依赖文件。
- sync 一下项目 再build 可以build了;如果上一步 删除了caches文件夹,此处会下载所有的依赖,时间会很长。如果上一步你是自己挨个lockfile去删除的,耗费的时间也神长,你自己体会,还不如直接删除了caches
针对性删除lockfile 方案
既然我们知道删除lockfile可以解决这个问题,那么,有没有什么办法直接去删除这些lockfile,当然有!删除lock的方案 主要是寻找lock file 比较费劲,那我直接写个脚本帮我找并删除就好了。
用于清理gradle build失败之后,产生的lock文件。
clean_lock.sh
#!/bin/bash
removeFiles() {
if test -d "$1"
then
echo "开始清理"
removeFileInDirectory $1
echo "清理完成"
else
echo "输入目录不存在"
fi
}
removeFileInDirectory() {
find $1 -name "*.lock" -print -type f -exec rm -f {} \;
}
removeFiles $1
上边的代码写好后,保存为 clean_lock.sh 然后执行命令就好了 让你的命令可执行:让你的.sh脚本文件可以执行
命令如下:
./clean_lock.sh [path]
使用时把path 替换为你要删除的路径即可:
删除gradle缓存汇总的lock文件
./clean_lock.sh /User/me/Desktop/gradle_home/caches/
删除项目中的lock文件
./clean_lock.sh /User/me/Desktop/my_project/
点这里直接下载