经过很多痛苦,我终于为Android建立了UHD。我使用一个脚本,它采用标准的UHD包,并使用android工具构建所有内容。然后我获取生成的库并包含文件并将它们放在jni目录下。这是我的目录结构的样子
> jni
> uhd
- Android.mk
> lib
- libuhd.so
- libuhd.so.003
- libuhd.so.003.005
> pkgconfig
- uhd.pc
> include
- *.hpp
这是我的Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := uhd
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SRC_FILES := lib/libuhd.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
当我将它包含在我的项目中时,一切都很好。当我把它放在设备上时会出现问题。该应用程序立即崩溃。查看日志文件会给我以下消息
E/dalvikvm(20135): dlopen("/data/app-lib/com.myproject-1/libmyproject.so") failed: dlopen failed: could not load library "libuhd.so.003" needed by "libmyproject.so"; caused by library "libuhd.so.003" not found
所以(没有双关语)我将LOCAL_SRC_FILES更改为libuhd.so.003,但是android会抛出一个错误告诉我我不允许这样做。预建的共享库必须以.so结尾,而不是.so.003。我也尝试将库复制到项目基目录中的/ libs文件夹,但这似乎也不起作用。
如何更改库名称或更改myproject.so正在查找的内容?
感谢。