在真实手机运行whisper.android项目时遇':app:buildNdkBuildDebug[armeabi-v7a]'执行失败
问题:whisper.android真机编译失败,模拟器运行正常
我能在Android Studio模拟器(Pixel XL API 13)上正常运行whisper.cpp的Android示例项目,但在真实手机上编译运行时出现错误,错误日志如下:
Execution failed for task ':app:buildNdkBuildDebug[armeabi-v7a]'. > com.android.ide.common.process.ProcessException: make: Nothing to be done for 'whisper'. [armeabi-v7a] Compile thumb : whisper_vfpv4 <= ggml.c * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:buildNdkBuildDebug[armeabi-v7a]'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) ... at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) Caused by: org.gradle.internal.UncheckedException: com.android.ide.common.process.ProcessException: make: Nothing to be done for 'whisper'. [armeabi-v7a] Compile thumb : whisper_vfpv4 <= ggml.c C++ build system [build] failed while executing: @echo off "C:\Android_SDK\ndk\25.1.8937393\ndk-build.cmd" ^ "NDK_PROJECT_PATH=null" ^ "APP_BUILD_SCRIPT=E:\Android_Studio_Sample\Whisper\examples\whisper.android\app\src\main\jni\whisper\Android.mk" ^ "NDK_APPLICATION_MK=E:\Android_Studio_Sample\Whisper\examples\whisper.android\app\src\main\jni\whisper\Application.mk" ^ "APP_ABI=armeabi-v7a" ^ "NDK_ALL_ABIS=armeabi-v7a" ^ "NDK_DEBUG=1" ^ "APP_PLATFORM=android-26" ^ "NDK_OUT=E:\Android_Studio_Sample\Whisper\examples\whisper.android\app\build\intermediates\cxx\Debug\11u1e1z2/obj" ^ "NDK_LIBS_OUT=E:\Android_Studio_Sample\Whisper\examples\whisper.android\app\build\intermediates\cxx\Debug\11u1e1z2/lib" ^ whisper ^ whisper_vfpv4 from E:\Android_Studio_Sample\Whisper\examples\whisper.android\app error: unable to open output file 'E:\Android_Studio_Sample\Whisper\examples\whisper.android\app\build\intermediates\cxx\Debug\11u1e1z2/obj/local/armeabi-v7a/objs-debug/whisper_vfpv4/E_/Android_Studio_Sample/Whisper/examples/whisper.android/app/src/main/jni/whisper/__/__/__/__/__/__/__//ggml.o': 'No such file or directory' 1 error generated. make: *** [C:/Android_SDK/ndk/25.1.8937393/build/../build/core/build-binary.mk:422: E:\Android_Studio_Sample\Whisper\examples\whisper.android\app\build\intermediates\cxx\Debug\11u1e1z2/obj/local/armeabi-v7a/objs-debug/whisper_vfpv4/E_/Android_Studio_Sample/Whisper/examples/whisper.android/app/src/main/jni/whisper/__/__/__/__/__/__/__//ggml.o] Error 1 at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:68) at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41)
原因分析
从日志核心错误信息可判断,这是NDK编译时的路径解析异常导致的:
- 真机编译目标ABI为armeabi-v7a,NDK生成ggml.o文件时,路径被错误解析成包含大量
__的无效路径,系统找不到对应输出目录,最终编译失败 - 模拟器正常运行是因为其通常使用x86/x86_64架构,对应的编译逻辑未触发该路径解析bug
解决办法
- 缩短项目路径:当前项目路径层级过多,Windows系统下路径过长易引发NDK解析异常,建议将项目迁移到更短的路径,比如
E:\WhisperDemo - 调整NDK版本:当前使用的NDK 25.1.8937393可能存在armeabi-v7a编译的路径bug,尝试降级到NDK 24或升级至最新稳定版
- 检查Android.mk路径配置:打开
app/src/main/jni/whisper/Android.mk,确认ggml.c的引用路径写法正确,避免多层级../导致的解析混乱 - 清理编译缓存:执行
Gradle -> Clean Project后再Rebuild Project,彻底清除旧编译缓存文件
内容的提问来源于stack exchange,提问作者HelloCW
相关产品推荐
相关产品推荐

