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

Gradle在Apple M1上构建NativeLibrarySpec等原生组件失败解决方案

问题根因

旧版Gradle的Native Component Model插件未适配Apple M1系列(Apple Silicon)芯片,自动检测宿主平台时会生成无效标识osx_arm-v8,该标识不在插件内置的支持平台列表中,直接触发配置异常,导致构建失败。

可行修复方案
  • 显式指定x86_64构建目标(改造成本最低)
    无需升级Gradle版本,直接在build.gradle的model块中手动声明目标平台,强制构建x86_64架构二进制,生成的产物可通过Rosetta 2在M系列芯片Mac上正常运行。修改后的配置示例:
plugins {                                                                       
  id 'cpp'                                                                    
}                                                                               
                                                                               
model {
  // 手动定义macOS x86_64平台
  platforms {
    x64 {
      architecture "x86_64"
      operatingSystem "osx"
    }
  }
  components {                                                                
    hello(NativeExecutableSpec) {
      targetPlatform "x64" // 绑定组件到指定平台                                                                          
      sources {                                                           
        cpp {                                                           
          source {                                                     
            srcDir "src/cpp"                                           
            include "hello.cc"                                         
          }                                                            
        }                                                               
      }                                                                   
    }                                                                       
  }                                                                           
} 
  • 升级Gradle使用新版原生构建插件
    旧版基于software model的Native Component插件已停止维护,Gradle 7.0及以上版本搭载的新版原生编译插件已原生支持Apple Silicon arm64架构。如果需要构建原生arm64版本的二进制,可将Gradle升级到7.0+,迁移到官方维护的cpp-application插件,最简配置如下:
plugins {
  id 'cpp-application'
}

application {
  source.from file("src/cpp/hello.cc")
}

该配置会自动识别当前M系列芯片的arm64平台,直接构建可原生运行的二进制文件,不会再出现平台识别错误。

  • 通过Rosetta 2在x86_64环境下构建
    若不想修改现有构建配置,可给终端开启Rosetta运行权限,搭配x86_64版本的JDK、Gradle执行构建,此时插件会正确识别平台为osx_x86-64,可正常完成编译。

内容的提问来源于stack exchange,提问作者Alexander Pushkarev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:57:14