gpt4 book ai didi

android - 使用 Android studio 进行 Jni 构建错误 : Library '/system/lib/libhoudini.so' not found

转载 作者:行者123 更新时间:2023-11-30 17:06:03 38 4
gpt4 key购买 nike

由于某种原因,我必须从 C 生成一些文本。因此,我为此目的编写了一些 C 方法。我使用 Android studio 构建 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

这是我从应用程序的构建文件夹中获取的 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)

请帮助我确保构建适用于所有设备,我们将非常感激。我没有太多设备可供测试。谢谢。

最佳答案

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

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)

这里有一个 Bash 脚本,可以帮助您在 APP_ABI 区域中添加 ABI 平台并根据需要更改文件路径。无需完全重新编译整个过程,但这将自动化您的 native *.so 构建,您可以使用 gradle 来完成其余的工作:

ndk-build APP_ABI=armeabi-v7a NDK_LOG=true

if [ $? = 0 ]; then
rm -rf build/native-libs/

cd libs
for i in *

#rm -v */libofx.so

for arch in *
do
builddir=../build/native-libs/$arch
mkdir -p $builddir
cp -v $arch/*.so $builddir
done
fi

关于android - 使用 Android studio 进行 Jni 构建错误 : Library '/system/lib/libhoudini.so' not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939400/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com