Android 不满意的链接错误-找不到库

Android 不满意的链接错误-找不到库,android,c,android-ndk,Android,C,Android Ndk,我正在尝试将libjnigraphics.so预构建库加载到我的项目中,但是在部署应用程序时,我收到以下错误: 06-17 22:35:28.741: INFO/dalvikvm(298): Unable to dlopen(/data/data/com.foo/lib/libndkfoo.so): Cannot load library: link_image[1721]: 29 could not load needed library 'libjnigraphics.so' for

我正在尝试将libjnigraphics.so预构建库加载到我的项目中,但是在部署应用程序时,我收到以下错误:

06-17 22:35:28.741: INFO/dalvikvm(298): Unable to dlopen(/data/data/com.foo/lib/libndkfoo.so): Cannot load library: link_image[1721]:    29 could not load needed library 'libjnigraphics.so' for 'libndkfoo.so' (load_library[1051]: Library 'libjnigraphics.so' not found)

它编译得很好

以下是我的Android.mk:

LOCAL_PATH := $(call my-dir)

# Add prebuilt libjnigraphics
include $(CLEAR_VARS)

LOCAL_MODULE := libjnigraphics
LOCAL_SRC_FILES := libjnigraphics.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)

# Here we give our module name and source file(s)
LOCAL_MODULE    := ndkfoo
LOCAL_SRC_FILES := ndkfoo.c
LOCAL_SHARED_LIBRARY := libjnigraphics
#LOCAL_LDLIBS += -libjnigraphics
LOCAL_LDLIBS += -llog

include $(BUILD_SHARED_LIBRARY)
有没有什么特别的地方我需要放图书馆的照片?现在我把它放在jni文件夹中,但是我在其他多个地方尝试过,但仍然失败。有什么帮助吗?

设备必须是(Android 2.2,目标平台Android-8)才能使用libjnigraphics.so。无论SDK或项目目录中有什么,该库都是设备系统库的一部分

您可以使用android-8上的NDK编译代码,但是当您侧面加载apk并且您的设备恰好运行2.1或更早版本时,它会给出链接时间错误


这是一个解决办法,但它不应该被依赖,并且会在某些设备上崩溃。下面是一个解释问题的示例。

请尝试以下更改:

LOCAL_PATH := $(call my-dir)
#添加预构建的libjnigraphics

包括$(清除变量)

本地_模块:=图形预构建

本地_SRC_文件:=libjnigraphics.so

本地导出包含:=$(本地路径)/包含

包括$(预建共享库)

包括$(清除变量)

本地_模块:=ndkfoo

本地\u SRC\u文件:=ndkfoo.c

本地共享库:=图形预构建

本地_LDLIBS+=-llog


include$(BUILD\u SHARED\u LIBRARY)

您是否查看了生成的APK以确保文件包含在那里?您也可以尝试将它们放在“libs”下的“armeabi”目录中(对于ARMv7代码,也可以放在“armeabi-v7a”)这是我一直放置本机库的地方,但我始终不确定这是因为构建环境还是执行环境。我尝试将它们放在armeabi中,但没有骰子。我会检查APK,但我打赌它可能不在那里。还有,为什么会有反对票和接近票?这个问题怎么了?你不应该把它放在你的项目中。库将在目标设备中运行。只需使用-libjnigraphics。目标是让它在2.1设备上运行,而不访问jnigraphics,这样我就可以通过LoadBitmap函数加载位图,否则无法访问。我意识到这一点,我的目标是根据这个问题向我的项目中添加jnigraphics:我以后会更多地研究解决方案,尽管我同意不应该依赖它。如果我无法调用bitmap.h文件,您建议如何将位图加载到本机代码中?这取决于它的用途:复制位图的数据数组,使用Open GL将位图作为纹理,用Java重写位图更改代码,或者放弃对android NDK技术领军人物David Turner的支持,在android ndk邮件列表线程上说:“[高性能图形]在Eclair上根本不可能。你的技巧可能是最好的方法,但不是100%安全的。”
# Here we give our module name and source file(s)