You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android Studio新建C++项目编译失败:clang.exe异常求助

解决Android Studio C++项目CMake编译错误的方案

我之前在Windows环境下折腾Android NDK项目时,也碰到过几乎一模一样的CMake编译报错,结合你的情况(默认项目未改代码就报错、换AS和SDK版本仍无效),给你几个实用的排查和解决步骤:

  • 检查NDK完整性与版本兼容性
    默认的ndk-bundle有时候会因为下载中断或者版本不匹配导致问题。建议你先删除C:/Users/15829/AppData/Local/Android/Sdk/ndk-bundle目录,然后打开Android Studio的SDK Manager,下载一个和你的AS 3.1.2兼容的固定版本NDK(比如r17c或者r20b,AS 3.1.2对这些版本支持更稳定),之后在local.properties里手动指定NDK路径,比如:

    ndk.dir=C:\\Users\\15829\\AppData\\Local\\Android\\Sdk\\ndk\\17.2.4988734
    
  • 验证CMake与Ninja的配置
    打开File > Project Structure > SDK Location,确认CMake和Ninja的路径是否指向正确的文件夹,并且版本和AS兼容。如果CMake版本太新,建议降级到3.10.x版本(AS 3.1.2自带的CMake版本就是3.10.2)。另外,可以尝试手动指定CMake路径到SDK自带的版本,避免使用系统安装的CMake。

  • 清理项目缓存并重建
    先执行Build > Clean Project,然后删除项目根目录下的.gradle.idea文件夹,以及app/build目录,接着点击File > Sync Project with Gradle Files同步项目,最后再执行Build > Rebuild Project。很多时候缓存文件损坏会导致这类奇怪的编译错误。

  • 排查杀毒软件的干扰
    Windows Defender或者第三方杀毒软件经常会误删CMake生成的临时编译文件(比如你提到的cmTC_a2146.dir/testCCompiler.c.o)。建议把你的Android SDK目录(C:/Users/15829/AppData/Local/Android/Sdk)添加到杀毒软件的白名单里,或者临时关闭杀毒软件后再尝试编译。

  • 切换构建系统为Makefiles
    如果Ninja一直报错,可以尝试换成Makefiles构建。打开app/build.gradle,修改externalNativeBuild的配置:

    android {
        // ...其他配置
        externalNativeBuild {
            cmake {
                path "CMakeLists.txt"
                buildSystem "makefiles" // 将原来的ninja替换为makefiles
            }
        }
    }
    

    同步Gradle后再编译试试。

  • 以管理员身份运行Android Studio
    Windows下的权限问题有时候会导致CMake无法写入临时文件,右键点击Android Studio图标,选择“以管理员身份运行”,然后重新打开项目编译。

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

火山引擎 最新活动