Ubuntu环境下Flutter编译arm64-v8a时CMake任务执行失败求助
解决方案
1. 检查Android NDK配置与版本
- 打开项目根目录下的
local.properties文件,确认ndk.dir指向的路径正确,且NDK版本与同事一致(Flutter 3.10.6推荐使用NDK 25.x或兼容版本)。 - 若路径错误或版本不匹配,修改后执行
flutter clean再重新编译。
2. 调整CMake链接器标志
- 找到项目中iris_method_channel模块的
CMakeLists.txt文件(通常在android/src/main/cpp/或对应模块目录下)。 - 检查是否全局添加了
--fix-cortex-a53-843419标志,改为仅针对arm64-v8a架构设置:
if(${ANDROID_ABI} STREQUAL "arm64-v8a") target_link_options(your_target_name PRIVATE -Wl,--fix-cortex-a53-843419) endif()
- 替换
your_target_name为实际的目标名称,保存后重新编译。
3. 排查系统环境变量冲突
- 检查是否设置了
CC、CXX等系统环境变量,这些可能会覆盖Android NDK的编译器:
echo $CC echo $CXX
- 若输出指向系统gcc而非NDK的clang,临时取消这些变量后再编译:
unset CC unset CXX flutter run
- 若问题解决,可将这些变量从
.bashrc或.zshrc中移除,避免永久冲突。
4. 验证Gradle构建配置
- 打开app模块的
build.gradle文件,检查android.defaultConfig.externalNativeBuild.cmake部分是否有自定义的编译器或链接器参数。 - 若存在可疑参数,尝试注释后重新编译,确认是否是该参数导致的问题。
5. 克隆全新项目副本
- 由于本地项目可能存在未被
flutter clean清除的损坏配置,从版本控制仓库克隆一份全新的项目,不保留任何本地修改,直接尝试编译。
内容的提问来源于stack exchange,提问作者Omar Abdo
相关产品推荐
相关产品推荐

