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

Android项目C++构建系统clean任务失败的解决方法咨询

问题

我的Android应用包含C++代码,此前Gradle同步、清理、构建及运行均无异常,直到通过Homebrew安装了最新版CMake(3.24.1)。

相关配置

  • CMakeLists.txt:
# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.24.1)
  • 模块级Gradle配置:
kotlinOptions {
    jvmTarget = '11'
}
externalNativeBuild {
    cmake {
        path file('src/main/cpp/CMakeLists.txt')
        version '3.24.1'
    }
}
  • 项目根Gradle配置:
buildscript {
    ext {
        compose_version = '1.3.0-beta02'
    }
    dependencies {
        classpath 'com.google.gms:google-services:4.3.13'
    }
}
plugins {
    id 'com.android.application' version '7.3.0-rc01' apply false
    id 'com.android.library' version '7.3.0-rc01' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
    id 'com.google.dagger.hilt.android' version '2.43.2' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
  • Android Studio版本:
Android Studio Dolphin | 2021.3.1 RC 1
Build #AI-213.7172.25.2113.8913347, built on August 6, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 10.15.7
GC: G1 Young Generation, G1 Old Generation
Memory: 8192M
Cores: 12
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false

Non-Bundled Plugins:
    com.android.aas (3.5.1)

错误现象

Gradle同步、构建、刷新关联C++项目均正常,但执行项目清理时多个externalNativeBuildClean任务失败,错误提示找不到/usr/local/Cellar/cmake/3.23.2/bin/cmake,典型错误日志如下:

> Task :shared:covert:externalNativeBuildCleanDevelopmentDebug FAILED
Clean native-lib-armeabi-v7a
C/C++: /bin/sh: /usr/local/Cellar/cmake/3.23.2/bin/cmake: No such file or directory
C/C++: ninja: error: rebuilding 'build.ninja': subcommand failed

失败详情显示清理时Ninja尝试调用旧版本CMake路径,但该版本已被Homebrew更新覆盖。另外,Android Studio内置CMake最高仅支持3.22.1版本。

解决方案

方案1:清理旧构建缓存

旧构建缓存中记录了过时的CMake路径,直接删除缓存即可:

  • 手动删除模块下的.cxx目录(示例路径:/Users/frank/github/mobile-android-showcase/shared/covert/.cxx)
  • 或在终端执行命令:./gradlew clean(若AS内执行clean失败,优先用终端执行)

方案2:切换到Android Studio内置CMake

由于AS仅支持最高3.22.1版本的CMake,调整配置统一使用内置版本:

  1. 修改CMakeLists.txt中的最低版本要求:
cmake_minimum_required(VERSION 3.22.1)
  1. 修改模块级Gradle中的CMake版本:
externalNativeBuild {
    cmake {
        path file('src/main/cpp/CMakeLists.txt')
        version '3.22.1' // 改为AS支持的最高版本
    }
}
  1. 同步Gradle后重新执行清理操作

方案3:创建软链接兼容旧路径

若必须使用Homebrew安装的CMake 3.24.1,可为旧路径创建软链接指向新版本:

  1. 若旧版本目录不存在,先创建:
mkdir -p /usr/local/Cellar/cmake/3.23.2/bin
  1. 创建软链接:
ln -s /usr/local/Cellar/cmake/3.24.1/bin/cmake /usr/local/Cellar/cmake/3.23.2/bin/cmake

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:31:19