我想做一些基本的函数。我正在命令行中运行/构建它。我在看用户指南。还有,做一些简单的任务。
当我开始运行简单的任务时,它被成功构建。但是,在一段时间后,它会显示“它目前正在被另一个Gradle实例使用”,并变成BUILD FAILED。我正在使用终端运行任务。那时候我什么都没做。
如果我关闭产生错误的终端,这个问题就解决了。但是,我知道这不是解决办法。
为什么这个错误经常出现?
如何解决?
并且,请参考任何链接来提高我对Android中Gradle Build系统的知识。
我想做一些基本的函数。我正在命令行中运行/构建它。我在看用户指南。还有,做一些简单的任务。
当我开始运行简单的任务时,它被成功构建。但是,在一段时间后,它会显示“它目前正在被另一个Gradle实例使用”,并变成BUILD FAILED。我正在使用终端运行任务。那时候我什么都没做。
如果我关闭产生错误的终端,这个问题就解决了。但是,我知道这不是解决办法。
为什么这个错误经常出现?
如何解决?
并且,请参考任何链接来提高我对Android中Gradle Build系统的知识。
当前回答
除了上面的答案,你还需要弄清楚为什么gradle进程退出而不释放锁来永久修复它。
在我的情况下,我做了所有*。锁定文件删除和Android Studio的无效缓存选项。但问题不断出现。
在终端中手动运行gradlew显示,当JVM堆空间耗尽时,gradle进程会过早退出。这个回答帮助解决了这个问题。
./gradlew build #to detect what crashes gradle processes
./gradlew --stop #to stop any running gradle processes
在解决问题后(例如:堆耗尽)
find .gradle/ -type f -name "*.lock" -delete #delete lock files
./gradlew build #Try building the project
其他回答
它为我工作 问题:
当前正在被另一个Gradle实例使用。业主PID: 6896我们的PID: 5048业主操作:我们的操作:锁定”
解决方案:
关闭Android Studio,打开任务管理器,结束java.exe进程 打开derectory ....gradle\caches。 删除jar2。锁文件。 打开android Studion并清理项目。
在我的案例中,罪魁祸首是限制性防火墙,反病毒系统的一部分。
根据https://discuss.gradle.org/t/timeout-waiting-to-lock-file-hash-cache/21961/2和https://github.com/elastic/elasticsearch/issues/50954#issuecomment-576772154, gradle-issue-8750, gradle服务器正在保留锁,并在其他gradle进程请求时释放它。通信通过本地主机上的UDP套接字进行。因此,如果有防火墙阻止这种通信,gradle保持文件锁和其他gradle进程不能继续。
尝试禁用AV /防火墙,看看问题是否消失。然后运行gradle,如下所示,以更好地了解发生了什么。
gradle --debug --no-daemon
调试日志显示锁的所有者,如果问题仍然存在,杀死锁的所有者。
2021-05-20T19:32:41.105+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] The file lock is held by a different Gradle process (pid: 67494, lockId: 628651820260732672). Pinged owner at port 58442
2021-05-20T19:32:42.330+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] The file lock is held by a different Gradle process (pid: 67494, lockId: 628651820260732672). Pinged owner at port 58442
然后kill -9 67494终止所有者并释放锁。
否则,一段时间后gradle会终止,并报错(在这里说明,这样很容易找到):
* What went wrong:
Gradle could not start your build.
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeServices.createResourceSnapshotterCacheService().
> Timeout waiting to lock file hash cache (/Users/myusername/.gradle/caches/6.9/fileHashes). It is currently in use by another Gradle instance.
Owner PID: 67494
Our PID: 68313
Owner Operation:
Our operation:
Lock file: /Users/myusername/.gradle/caches/6.9/fileHashes/fileHashes.lock
只是杀死java.exe进程修复我的问题。
——编辑——
如果没有修复,则:
关闭OpenJdkPlatform进程。
如果没有修复,则:
删除所有”。(windows: c:\ users \用户名\.gradle)。
如果没有修复,则:
重命名或删除.gradle目录后重试。
我可能会迟到,但看起来是一个快速有效的解决方案。
请执行以下步骤。
执行ps -ef | grep gradle 打开终端,移动到~/。gradle /缓存路径 执行find ~/。Gradle -type f -name "*。读取f时锁定“|”;做rm $f;完成 删除Android studio中的。gradle和。idea文件夹。
这是完成了。
Windows机器:
打开任务管理器(按Ctrl-Alt-Delete并检查进程)
如果你运行两个android studio实例,关闭一个(结束任务)
->关闭“OpenJDK Platform Binary”
-> Gradle同步现在AndroidStudio和它将工作