You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple M1设备上IntelliJ IDEA中Kotlin/Native Hello World无输出问题

Kotlin/Native项目在Apple M1设备上IntelliJ运行无输出的解决办法

问题场景

使用IntelliJ IDEA 2022.2.3(社区版),通过Kotlin Native应用模板创建项目,Gradle依赖kotlin("multiplatform") version "1.7.20"。项目核心代码仅包含打印Hello World的main函数:

fun main() {
    println("Hello, Kotlin/Native!")
}

在IDE中构建项目显示成功,但看不到Hello World输出,运行面板显示> Task :runDebugExecutableNative SKIPPED(灰色标识)。手动在命令行运行构建生成的Kasha.kexe可正常输出内容,仅IDE内运行无结果。

问题原因

问题出在Apple M1(Apple Silicon)设备的架构适配:模板生成的Gradle配置默认将Mac OS X设备的目标架构设为macosX64(Intel架构),但M1是Arm64架构,导致IDE无法找到匹配架构的可执行文件,因此跳过了run任务。
模板默认配置片段:

kotlin {
    val hostOs = System.getProperty("os.name")
    val isMingwX64 = hostOs.startsWith("Windows")
    val nativeTarget = when {
        hostOs == "Mac OS X" -> macosX64("native")
        hostOs == "Linux" -> linuxX64("native")
        isMingwX64 -> mingwX64("native")
        else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
    }
    // ... 其他配置
}

解决方案

1. 针对M1设备单独修改

直接将macosX64替换为macosArm64,修改后的配置:

kotlin {
    val hostOs = System.getProperty("os.name")
    val isMingwX64 = hostOs.startsWith("Windows")
    val nativeTarget = when {
        hostOs == "Mac OS X" -> macosArm64("native")
        hostOs == "Linux" -> linuxX64("native")
        isMingwX64 -> mingwX64("native")
        else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
    }
    // ... 其他配置
}

修改后重新同步Gradle,即可在IDE中正常运行并看到输出。

2. 兼容Intel和Apple Silicon设备的通用配置

如果需要项目同时在Intel Mac和M1 Mac上运行,可通过判断系统架构动态设置目标:

kotlin {
    val hostOs = System.getProperty("os.name")
    val osArch = System.getProperty("os.arch")
    val isMingwX64 = hostOs.startsWith("Windows")
    val nativeTarget = when {
        hostOs == "Mac OS X" -> 
            if (osArch == "aarch64") macosArm64("native") else macosX64("native")
        hostOs == "Linux" -> linuxX64("native")
        isMingwX64 -> mingwX64("native")
        else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
    }
    // ... 其他配置
}

关于Intel设备兼容性的说明

如果直接将配置固定为macosArm64,Intel架构的Mac设备构建项目时会失败——因为目标架构与设备硬件不匹配。因此推荐使用通用配置,让Gradle根据当前设备的架构自动选择对应的目标平台,同时兼容两种Mac设备。

内容的提问来源于stack exchange,提问作者Grzegorz Adam Hankiewicz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:10:57