org.jetbrains.skiko.LibraryLoadException: Cannot find libskiko-macos-arm64.dylib.sha256, proper native dependency missing。

11
我试着在我的 M1 MacbookPro 上用 IntelliJ (Apple-Silicon) 编译 https://github.com/CuriousNikhil/k5-compose,但是出现了下面的错误。
Caused by: org.jetbrains.skiko.LibraryLoadException: Cannot find libskiko-macos-arm64.dylib.sha256, proper native dependency missing.
    at org.jetbrains.skiko.Library.load(Library.kt:71)
    at org.jetbrains.skiko.HardwareLayer.<clinit>(HardwareLayer.kt:10)

我该如何解决这个问题?

5个回答

13
在项目的 build.gradle.kts 中,将 implementation(compose.desktop.currentOs) 更改为 implementation(compose.desktop.macos_arm64)

1
谢谢 - 我在 Arch Linux 上构建了一个 JAR 文件并部署到树莓派上,这就是我的问题所在。在树莓派上进行组合胜利。 - bsautner

4

虽然我发现被接受的答案可行:

implementation(compose.desktop.currentOs)

更改为

implementation(compose.desktop.macos_arm64)

文档似乎表明您只需更新向导的版本即可:

向导中使用的Compose插件版本可能不是最新的。通过编辑build.gradle.kts文件并按以下所示更新版本信息来更新到最新的插件版本。有关最新版本,请参见最新版本网站和Kotlin网站。

plugins {
    kotlin("jvm") version "1.7.20"
    id("org.jetbrains.compose") version "1.2.2"
}

这也是可行的,我认为应该优先选择这种方法。


1

我遇到了类似的错误,但是针对Linux。

Cannot find libskiko-linux-x64.so.sha256, proper native dependency missing.

更新所有内容到最新版本并将currentOs替换为linux_x64没有任何区别,仍然出现相同的错误。
build.gradle.kts中明确添加对skiko的依赖后,它正常工作了。
implementation("org.jetbrains.skiko:skiko-awt-runtime-linux-x64:0.7.69")

1
我查看了Skiko本身的文档,并发现他们建议以以下方式手动导入它(version可能会有所不同):
val osName = System.getProperty("os.name")
    val targetOs = when {
        osName == "Mac OS X" -> "macos"
        osName.startsWith("Win") -> "windows"
        osName.startsWith("Linux") -> "linux"
        else -> error("Unsupported OS: $osName")
    }

    val targetArch = when (val osArch = System.getProperty("os.arch")) {
        "x86_64", "amd64" -> "x64"
        "aarch64" -> "arm64"
        else -> error("Unsupported arch: $osArch")
    }

    val version = "0.7.70" // or any more recent version
    val target = "${targetOs}-${targetArch}"

    sourceSets {
        val jvmMain by getting {
            dependencies {
                implementation("org.jetbrains.skiko:skiko-awt-runtime-$target:$version")
                implementation(compose.desktop.currentOs)
           }
      }
}

我只是简单地将这个放在以下位置(在build.gradle.kts中): kotlin {} 但我认为当你将其放在外面时,这也是有效的。但是实现必须在dependencies {}中。这个解决方案完美地解决了我的问题。我还尝试将implementation(compose.desktop.currentOs)更改为implementation(compose.desktop.macos_arm64),但对我来说没有修复它。

0
今天我在Intel x64 iMac上遇到了同样的错误,通过升级插件版本解决了问题。
kotlin("jvm")从1.5.31升级到1.6.10,将id("org.jetbrains.compose")从1.0.0升级到1.1.1
顺便提一下,一个月前这个程序还能正常运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接