使用Android工作室错误构建Jni:Library' /system/lib/libhoudini.so'未找到

时间:2016-01-22 05:07:33

标签: android c android-studio java-native-interface

由于某种原因,我必须从C生成一些文本。所以,我为此目的编写了一些C方法。我用Android工作室构建了Jni,看起来我的5.1.0 Genymotion模拟器工作得很好。 但是当我在4.1.1模拟器上运行构建时,我遇到了这个问题:

Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: load_library[1098]: Library '/system/lib/libhoudini.so' not found
at java.lang.Runtime.loadLibrary(Runtime.java:370)
at java.lang.System.loadLibrary(System.java:535)

经过研究。也许问题来自构建jni问题,我还没有为x86构建* .so文件。但是当我反编译apk时,似乎* .so文件已经在" x86"文件夹中。

enter image description here

这是我从app的构建文件夹中获取的android.mk文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := ofx
LOCAL_LDFLAGS := -Wl,--build-id
LOCAL_SRC_FILES := \
    xxx.../app/src/main/jni/key/Base64Util.c \
    xxx.../app/src/main/jni/key/hidingutil.c \

LOCAL_C_INCLUDES += xxx.../app/src/main/jni
LOCAL_C_INCLUDES += xxx.../app/src/Beneficiary/jni
LOCAL_C_INCLUDES += xxx.../app/src/debug/jni
LOCAL_C_INCLUDES += xxx.../app/src/BeneficiaryDebug/jni

include $(BUILD_SHARED_LIBRARY)

请帮助我确保所有设备的构建都没问题,非常感谢。我没有很多设备可以进行测试。 感谢。

2 个答案:

答案 0 :(得分:0)

在您的Android.mk文件中,我没有看到您将任何预建的库设置为资源。这有助于包容。

params

这是一个帮助的Bash脚本,在APP_ABI区域添加您的ABI平台并根据需要更改文件路径。无需完全重新编译整个内容,但这会自动化您的原生* .so版本,您可以使用gradle来完成剩下的工作:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := module_name 
LOCAL_SRC_FILES := $(LOCAL_PATH)/prebuilt_lib_name.so
include $(PREBUILT_SHARED_LIBRARY)

答案 1 :(得分:0)

我从post找到了解决方案。 这是因为genymotion模拟器需要ARM翻译库。您可以从here下载。希望它会对某人有所帮助。