You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成libturbojpeg.so 3.0.2后ndk-build执行clean时报“LOCAL_SRC_FILES指向缺失文件”的问题咨询

集成libturbojpeg.so 3.0.2后ndk-build执行clean时报“LOCAL_SRC_FILES指向缺失文件”的问题咨询

我最近把libjpeg-turbo从1.5.0升级到3.0.2,尝试将libturbojpeg.so集成到Android Studio项目中,使用ndk-build进行构建。但在执行ndkClean或ndk-build.cmd clean时,构建流程失败,报错信息如下:

Android NDK: ERROR: /UVCCamera/Android.mk:turbojpeg: LOCAL_SRC_FILES points to a missing file
Android NDK: Check that /libs/armeabi-v7a/libturbojpeg.so exists or that its path is correct

尽管我已经将libturbojpeg.so放到了对应的libs/armeabi-v7a/和libs/arm64-v8a/目录中,构建仍然会失败。而且只有当所有ABI版本的.so文件都存在时,清理流程才不会报错——哪怕当前构建只针对单个ABI目标。手动复制.so文件时集成能正常工作,但除非所有ABI的.so文件都齐全,否则清理过程必然失败。

环境信息

  • libjpeg-turbo版本:3.0.2
  • NDK版本:23.1.7779620
  • Android Studio版本:Hedgehog | Chipmunk
  • Gradle插件:7.x
  • 构建系统:通过Gradle的externalNativeBuild.ndkBuild调用ndk-build
  • 目标ABI:armeabi-v7a 和 arm64-v8a
  • minSdkVersion:21

复现步骤

  1. 使用CMake为armeabi-v7a和arm64-v8a构建libturbojpeg.so
  2. 将.so文件放入对应的libs/<ABI>/目录中
  3. 在Android.mk中声明:LOCAL_SRC_FILES := ../../libs/$(TARGET_ARCH_ABI)/libturbojpeg.so
  4. 执行ndk-build.cmd clean或./gradlew clean
  5. 若任意一个ABI的.so文件缺失,就会触发报错

预期行为

ndkClean不应因为仅构建选中的APP_ABI而失败;或者如果当前ABI不需要某个.so文件,应该提供更清晰的降级机制。

临时解决方法

  • 手动将.so文件复制到所有ABI目录中,哪怕当前不针对该ABI进行构建
  • 或者在Application.mk中临时将APP_ABI限制为单个目标

咨询请求

能否帮忙确认以下几个问题:

  • 这种行为是有意设计的吗?
  • 有没有更简洁的方式集成预构建的.so文件,避免因未使用的ABI对应的.so文件缺失而触发LOCAL_SRC_FILES错误?
  • 能否为Android预构建使用场景提供一个默认的cmake + ndk-build集成示例?

非常感谢你们开发了这款快速且稳定的JPEG库!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 10:49:35