Flutter FFI集成libresample时Android端CMake构建报CXX1405错误
libresample_flutter插件Android arm64-v8a Debug构建CXX1405错误修复方案
CXX1405是CMake配置阶段子命令执行失败的通用错误码,Windows环境下编译Flutter FFI Native插件触发该错误,按以下优先级逐一排查修复即可:
1. 路径与工具链版本匹配问题(最高发)
- 检查项目所在路径
C:\project\libresample_flutter,确认全路径无中文、空格、特殊转义字符(包括括号、&、%、中文标点等)。Windows平台Android NDK内置的CMake工具链对非ASCII、非标准路径兼容性极差,只要路径含中文100%触发配置失败,存在这类问题直接将项目迁移到纯英文无空格的根目录(比如C:\dev\projects\)后重试。 - 核对插件模块
android/build.gradle中配置的NDK与CMake版本匹配关系:NDK 25.x及以上版本必须搭配CMake 3.22.1及以上版本,NDK 21~24版本搭配CMake 3.18.1,版本错配会直接触发配置失败,禁止使用+通配符拉取未知版本的构建工具。参考配置如下:
android { // 其余配置省略 ndkVersion "25.2.9519653" // 与本地Android SDK中安装的NDK版本完全一致 externalNativeBuild { cmake { path "CMakeLists.txt" version "3.22.1" // 与NDK版本严格匹配 } } }
2. CMakeLists.txt配置错误
打开C:\project\libresample_flutter\android\CMakeLists.txt,排查以下常见错误:
- 禁止硬编码本地绝对路径,所有源码、依赖文件的引用必须基于
${CMAKE_CURRENT_SOURCE_DIR}写相对路径,比如引用插件内的重采样源码要写为${CMAKE_CURRENT_SOURCE_DIR}/src/resample.c,不能写个人电脑上的固定绝对路径。 - 不要在CMake配置中调用仅Linux环境支持的shell命令(比如
sh、rm、cp类shell指令),Windows环境下无对应执行环境会直接失败,跨平台操作请使用CMake内置指令实现。 - 参考可用的最小CMake配置核对你的现有配置:
cmake_minimum_required(VERSION 3.22.1) project(libresample_flutter) add_library( libresample_flutter SHARED src/libresample.c src/ffi_native_bind.c ) find_library( log-lib log ) target_link_libraries( libresample_flutter ${log-lib} )
3. 构建缓存损坏修复
如果上述配置核对无误仍报错,按顺序执行以下命令清理损坏的构建缓存:
# 进入项目根目录 cd C:\project\libresample_flutter # 清理Flutter层构建缓存 flutter clean # 清理Android层构建缓存 cd android gradlew clean # 回到根目录重新拉取依赖 cd .. flutter pub get # 单独构建arm64-v8a架构Debug包验证 flutter build apk --debug --target-platform android-arm64
如果清理缓存后仍失败,打开Android Studio的SDK Manager,卸载所有已安装的NDK、CMake版本,重新安装对应匹配版本的构建工具,排除本地工具链文件损坏的问题。
注意事项
你提到的Dart层FFI绑定代码、main.dart测试入口代码属于Dart层业务逻辑,不会参与Native层CMake配置阶段的编译流程,不会触发CXX1405错误,无需在CMake配置失败阶段排查这部分内容。
如果需要定位具体失败点,构建时加上
--verbose参数查看CMake配置阶段的完整日志,找到具体执行失败的子命令,可以直接对应到上述修复点快速解决。
内容的提问来源于stack exchange,提问作者parisa
相关产品推荐
相关产品推荐

