KMM:切换操作系统进行构建时,由于被另一个 Gradle 实例锁定而导致构建失败

Posted

技术标签:

【中文标题】KMM:切换操作系统进行构建时,由于被另一个 Gradle 实例锁定而导致构建失败【英文标题】:KMM: Build fails caused by being locked by another Gradle instance, when switching the OS to build 【发布时间】:2021-10-13 06:00:44 【问题描述】:

我创建了一个 KMM 项目(ios 框架发行版是 CocoaPods),并在不更改代码的情况下构建了应用程序。

当我在构建 android 应用程序之后构建 iOS 应用程序时(即使我在 iOS 之后运行 Android),它会失败并出现以下错误。

Gradle could not start your build.
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeServices.createResourceSnapshotterCacheService().
   > Timeout waiting to lock file hash cache (/Users/<user-name>/.gradle/caches/6.7.1/fileHashes). It is currently in use by another Gradle instance.
     Owner PID: 57033
     Our PID: 57624
     Owner Operation: 
     Our operation: 
     Lock file: /Users/<user-name>/.gradle/caches/6.7.1/fileHashes/fileHashes.lock

如果我杀死另一个 Gradle 进程并删除锁定文件,则构建将成功。但我不能每次都这样做。

不知道哪里不对,和别人有什么不同。

顺便说一句,我创建的项目支持improved Gradle task embedAndSignAppleFrameworkForXcode


我的环境在下面……

macOS Big Sur 11.4 Android Studio 4.2.2 Kotlin 1.5.21 Kotlin Multiplatform Mobile 0.2.6 (202-1.5.10-release-894-IJ)-8 Gradle 6.7.1 AGP 4.2.2 Java 11.0.8 2020-07-14 LTS Xcode:12.5.1 (12E507)

【问题讨论】:

JDK 位置错误。需要设置JAVA_HOME。 【参考方案1】:

尝试将gradle 更新为7.1.1(最新版本)

如果这没有帮助,请考虑在jetbrains issue tracker 上创建一个问题,因为这似乎不是一个典型的问题,并且在那里可以更快地解决

【讨论】:

JDK 位置错误。我应该在 Android Studio 的事件日志中注意到一个警告。我设置了 Embedded JDK,但我需要设置 JAVA_HOME。不需要将 gradle 更新到最新版本。感谢您的建议!

以上是关于KMM:切换操作系统进行构建时,由于被另一个 Gradle 实例锁定而导致构建失败的主要内容,如果未能解决你的问题,请参考以下文章

从 KMM 模块获取 applicationContext

KMM 入门处理多线程

KMM 入门处理多线程

KMM 入门处理多线程

它当前正被另一个 Gradle 实例使用

KMM 入门使用 SQLDelight 操作数据库