Android Studio编译Alize声纹识别项目时CMake报错及后续问题
编译Alize声纹识别Android项目的坑点及解决思路
最近在Android Studio里折腾Alize声纹识别项目的编译,踩了好几个连环坑,把解决过程整理出来,给遇到同样问题的朋友做个参考:
1. 先解决CMAKE_CXX_COMPILER未设置的错误(EnableLanguage后)
刚按照提示下载NDK和CMake并同步项目后,就弹出了这个错误,折腾了几下才搞定:
- 先确认SDK Manager里的NDK和CMake真的安装到位,路径也没毛病:打开
File > Project Structure > SDK Location,检查NDK路径是否正确配置。 - 清缓存重启试试:
File > Invalidate Caches... > Invalidate and Restart,有时候同步的缓存抽风会导致这种奇怪的错误。 - 检查
local.properties文件:确保里面的ndk.dir和cmake.dir指向正确的安装目录,比如:ndk.dir=/Users/yourname/Library/Android/sdk/ndk/25.1.8937393 cmake.dir=/Users/yourname/Library/Android/sdk/cmake/3.22.1
2. 外部原生构建失败:找不到alizeString.cpp + 无法确定alize-native的链接语言
第一个问题解决后,又遇到了新的连环错误:CMake在执行add_library(CMakeLists.txt第96行)时找不到src/main/cpp/alize-core/src/alizeString.cpp,还提示无法确定目标alize-native的链接语言,Release和Debug的armeabi-v7a架构都中招。解决步骤如下:
- 先确认文件路径和大小写:手动去项目里找这个文件,注意CMake对路径大小写敏感(尤其是Mac/Linux环境),别因为大小写写错导致找不到。
- 修正CMakeLists.txt里的路径写法:如果文件确实存在,试试用
${CMAKE_CURRENT_SOURCE_DIR}来拼接绝对相对路径,避免层级写错:add_library(alize-native SHARED ${CMAKE_CURRENT_SOURCE_DIR}/src/alizeString.cpp # 其他需要编译的源文件... ) - 解决链接语言问题:这个错误大多是因为CMake找不到源文件导致的,解决完上面的文件找不到问题后,这个错误基本会自动消失。如果还存在,手动指定链接语言:
set_target_properties(alize-native PROPERTIES LINKER_LANGUAGE CXX) - 检查架构配置:确认app模块的build.gradle里
ndk.abiFilters包含armeabi-v7a,避免多余架构干扰:android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } }
3. build.gradle中androidTestCompile过时警告
这个是小问题,提示配置'androidTestCompile'已过时,会在2018年底移除,替换成androidTestImplementation就行:
- 把build.gradle里所有的
androidTestCompile替换为androidTestImplementation,比如:// 旧代码 androidTestCompile 'junit:junit:4.12' // 替换后 androidTestImplementation 'junit:junit:4.12' - 如果是库模块需要对外暴露测试依赖,可以用
androidTestApi,普通应用模块用androidTestImplementation就足够了。
内容的提问来源于stack exchange,提问作者threewire
相关产品推荐
相关产品推荐

