我已经开始开发一个非常简单的 Android 应用程序,它由三个部分组成:
- Java 应用程序本身
- 一个预建的共享库(我们称之为
libfoo
) - 另一个使用预建库的共享库(我们称之为
libfoowrapper
)
文件系统如下所示:
jni
Android.mk
libfoo.so
foowrapper.c
该Android.mk
文件包含以下内容:
LOCAL_PATH := $(call my-dir)
#==============================
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)
#=========================
include $(CLEAR_VARS)
LOCAL_MODULE := foowrapper
LOCAL_SRC_FILES := foowrapper.c
LOCAL_SHARED_LIBRARIES := foo-prebuilt
include $(BUILD_SHARED_LIBRARY)
当我在 Eclipse 中构建应用程序时,一切似乎都运行良好 - 没有报告错误。但是,当我将应用程序上传到我的 Samsung Discover(运行 Android 4.0.4)时,我在日志中收到以下错误:
03-05 21:20:27.859: E/AndroidRuntime(20324): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1936]: 102 could not load needed library 'libfoo.so.0' for 'libfoowrapper.so' (load_library[1091]: Library 'libfoo.so.0' not found)
为什么 Dalvik 寻找.so.0
文件而不是.so
文件?我需要对我的应用程序进行哪些更改才能消除此错误?