我正在尝试将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)
我需要把libjnigraphics.so放在一个特殊的地方吗?现在我把它放在jni文件夹中,但是我已经在其他多个地方尝试了它,但它仍然失败了。有什么帮助吗?
答案 0 :(得分:2)
设备必须是running Foyo(Android 2.2,目标平台android-8)才能使用libjnigraphics.so。无论SDK或项目目录中的内容是什么,该库都是设备系统库的一部分。
您可以使用带有android-8的NDK编译代码,但是当您侧载apk并且您的设备恰好运行2.1或更早版本时,它会给出链接时错误。
这个SO question有一个解决方法,但不应该依赖它,并且会在某些设备上崩溃。这是一个解释问题的post on the android-ndk group。
答案 1 :(得分:0)
试试这些变化:
LOCAL_PATH := $(call my-dir)
#添加预建的libjnigraphics
包括$(CLEAR_VARS)
LOCAL_MODULE:= graphics-prebuilt
LOCAL_SRC_FILES:= libjnigraphics.so
LOCAL_EXPORT_C_INCLUDES:= $(LOCAL_PATH)/ include
包括$(PREBUILT_SHARED_LIBRARY)
包括$(CLEAR_VARS)
# Here we give our module name and source file(s)
LOCAL_MODULE:= ndkfoo
LOCAL_SRC_FILES:= ndkfoo.c
LOCAL_SHARED_LIBRARY:= graphics-prebuilt
LOCAL_LDLIBS + = -llog
包括$(BUILD_SHARED_LIBRARY)