我正在使用 Kotlin 编程,我想将skiko用于我的 Kotlin/Native 应用程序。我的 Gradle 构建文件与 skiko 的 README 中的完全相同(见下文),但出于某种原因,我收到错误:“未解析的引用:实现”这可能意味着什么?我以为这是 Kotlin DSL 的一部分?那么它怎么可能不知道这个函数呢?我在其他项目中从未遇到过这个问题。
提前致谢
我使用 Gradle 8.10,并且只在 IntelliJ 中同步 Gradle 更改。从设置“使用 Gradle 构建和运行”来看,我认为 IntelliJ 没有使用 Gradle Wrapper。
我尝试从其他项目复制构建文件,并自己进行等级初始化
来自build.gradle.kts
repo 的是
repositories {
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
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 osArch = System.getProperty("os.arch")
val targetArch = when (osArch) {
"x86_64", "amd64" -> "x64"
"aarch64" -> "arm64"
else -> error("Unsupported arch: $osArch")
}
val version = "0.8.9" // or any more recent version
val target = "${targetOs}-${targetArch}"
dependencies {
implementation("org.jetbrains.skiko:skiko-awt-runtime-$target:$version")
}
您链接的安装说明专门展示了 Kotlin JVM 项目安装的摘录(我们知道这一点是因为该
implementation
配置特定于 JVM 项目)。此外,由于 JVM 可以在各种底层平台上运行,因此脚本需要确定当前平台是什么。对于 Kotlin/Native 应用程序来说,这些都不是必需的,因为 Gradle 在构建时就知道所使用的平台类型。这意味着 Gradle 可以使用变体感知依赖项选择来为平台选择正确的依赖项,而无需对所显示的平台进行任何自省。这也意味着我们可以只添加Skiko 多平台模块作为源集的依赖项
commonMain
,并保持简单(如果我们决定针对其他 Kotlin/Native 平台,则灵活)。这意味着您的构建脚本可以简单地是:
请注意,这显示了正在应用的 Kotlin 多平台插件;您提供的示例设置中省略了 Kotlin 插件的应用。
我认为,公平地说,为该模块提供的指导可能会更有帮助。您可以考虑提出一个 GitHub 问题,并要求他们对其进行扩展,以便为那些不太熟悉 Kotlin 多平台设置的人提供更多帮助。
实现不是原生的 gradle 功能。你应该使用一些插件。例如,你应该添加 kmp 插件:
对于 Java 应用程序,你应该添加一个 Java 插件