【问题标题】:Problems loading dependent .SO in Android NDK在 Android NDK 中加载依赖 .SO 时出现问题
【发布时间】:2014-03-15 07:38:37
【问题描述】:

我有以下 Android.mk...

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Box2D-local
LOCAL_SRC_FILES := $(LOCAL_PATH)/../Box2D/libs/$(TARGET_ARCH_ABI)/libbox2D.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE    := openbox
LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. $(LOCAL_PATH)
NDK_OUT :=../../
LOCAL_SRC_FILES := \
$(subst $(LOCAL_PATH)/,, \
$(wildcard $(LOCAL_PATH)/*.cpp) \
    $(wildcard $(LOCAL_PATH)/Collision/Shapes/*.cpp))
LOCAL_LDLIBS := -lm -llog -ldl -lGLESv1_CM
LOCAL_SHARED_LIBRARIES := Box2D-local
include $(BUILD_SHARED_LIBRARY)

一切编译正常,但是当我运行应用程序时,我看到......

D/dalvikvm(14851):尝试加载 lib /data/app-lib/com.lmdig.android.tutorial.oglbox2dbasics-1/libopenbox.so 0x40ce7138

E/dalvikvm(14851):dlopen("/data/app-lib/com.lmdig.android.tutorial.oglbox2dbasics-1/libopenbox.so") 失败:无法加载库:soinfo_link_image(linker.cpp:1635 ):无法加载“libopenbox.so”所需的库“libbox2D.so”; load_library(linker.cpp:745): library "libbox2D.so" not found

但是当我看到设备上的 /data/app-lib/com.lmdig.android.tutorial.oglbox2dbasics-1/ 文件夹时...

root@android:/ # ls /data/app-lib/com.lmdig.android.tutorial.oglbox2dbasics-1/
libbox2D.so
libopenbox.so

是我的 LOCAL_SRC_FILES 错误还是什么?

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    看起来我认为当我将它加载到另一个类中时,它将用于这个类。这个假设是不正确的,我必须在类中加载这两个库。

    【讨论】:

    • 正确。 Android 加载程序不会在 app-lib 文件夹中查找可以解决缺失引用的 so 文件,而只会在 /system/lib 中查找
    • @Jackie 那么你实际上做了什么来解决这个问题?在 NativeActivity 类中添加对 System.loadLibrary("box2D") 的调用?以某种方式修改您的 Android.mk?
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多