我尝试加载 libcamera_client.so 但我遇到了问题。根据我的 Android.mk,它应该创建一个名为“include”的文件夹,其中包含相机库,对吗?但它不会创建文件夹,我看不到它。当我使用 #include <camera/Camera.h>
和 using namespace android;
我明白了:
fatal error: camera/Camera.h: No such file or directory
error: 'android' is not a namespace-name
谁能帮帮我?
提前致谢。
我的 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := camera_client-prebuild
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcamera_client.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test.cpp
LOCAL_SHARED_LIBRARIES := camera_client-prebuild
LOCAL_LDLIBS := -llog -ldl -lm
include $(BUILD_SHARED_LIBRARY)
更新 1:
我正在尝试为特定的 Android 设备编写一个应用程序,该应用程序使用带有 native 代码的相机。我从我的设备中获取了已编译的库 (libcamera_client.so),我想加载相机的功能。
我试着写 LOCAL_LDLIBS := -llog -ldl -lm -lcamera_client
并将包含目录 ( https://android.googlesource.com/platform/frameworks/av/+/android-4.1.2_r2.1/include ) 复制到本地 jni 文件夹中。但是当我编译时,我看到 jni/camera/Camera.h:20:26: fatal error: utils/Timers.h: No such file or directory
,问题是 camera.h
取决于我没有在本地项目中复制的其他库。当我删除该行时:
#include <camera/Camera.h>
我能看到:
arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lcamera_client
此外,我更改了我的代码:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test.c
LOCAL_LDLIBS := -llog -ldl -lm
LOCAL_SHARED_LIBRARIES := libcamera_client
LOCAL_C_INCLUDE := frameworks/av/include
include $(BUILD_SHARED_LIBRARY)
但问题仍然取决于我在本地项目中没有的其他库
jni/camera/Camera.h:20:26: fatal error: utils/Timers.h: No such file or directory
最佳答案
看起来您正在使用完整的 Android 源代码树进行构建,因此我假设您正在为特定的 Android 设备编写应用程序。如果不是,请不要这样做 - libcamera_client 不是任何公共(public) API 或 NDK 的一部分,因此使用它非常脆弱。由于该库是一个实现细节,各个 Android 供应商可以随意修改或替换它,并且它可能会在未来的 Android 版本中消失/更改。
除此之外,完整的 Android 版本已经包含该库,因此您只需引用它即可。完全删除 PREBUILD_SHARED_LIBRARY 部分,不需要它。 然后尝试将以下内容添加到您的测试规则中:
LOCAL_SHARED_LIBRARIES := libcamera_client
LOCAL_C_INCLUDES := frameworks/av/include
此外,为什么要构建共享库作为最终产品,而不是可执行文件?这可能是错误的,除非您遗漏了测试程序的最终构建规则。
关于android - 如何使用 android ndk 的原生相机库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859299/