包括android ndk中的预建库

时间:2014-03-28 17:57:30

标签: android sdk android-ndk

经过很多痛苦,我终于为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正在查找的内容?

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个。它可能会有所帮助:SDL 2.0 on Android