gpt4 book ai didi

android - 如何从 armeabi 以外的位置加载共享对象?

转载 作者:行者123 更新时间:2023-11-29 21:02:12 25 4
gpt4 key购买 nike

我正在使用 openTok 库进行视频聊天,libopentok.so 文件将被放入“libs”下的“armeabi”文件夹中。我的项目已经有 jni,它在编译后将自己的文件夹(如 armeabi、armeabi-v7 和 mips)放入 libs 中,并替换包含 libopentok.so 文件的 armeabi 文件夹。

请告诉我应该把我的 .so 文件放在哪里以及我应该如何访问该文件,谢谢

最佳答案

[copy artifacts] into libs after compilation and replace the armeabi folder containing libopentok.so file

您不应替换现有文件夹。相反,您应该将 libopentok.so 放在 Android 构建系统所期望的相同文件夹中。


Please let me know where should I place my .so file and how should I access that file

我认为您有三个选项来执行复制(而不是替换)。

首先,您可以手动将libopentok.so 复制到适当的文件夹中。我过去常常这样做,而不是与 Android 构建系统作斗争。我曾经使用一个脚本来完成它,该脚本简单地收集所有依赖项,在 jni/ 下创建目录结构,然后执行复制。

其次,您也许可以在构建前或构建后的步骤中使用 ant 来完成它,但我无法帮助您,因为我仍然无法理解XML 配置规则(以及 ant 手册页很糟糕)。

第三,您可以使用 Android 构建系统来完成。在 Android.mk 中看起来像这样。本质上,Android.mk 将具有两个组件的指令/配方。

#########################################################
# OpenTok library
include $(CLEAR_VARS)

OPENTOK_INCL := /usr/local/opentok/$(TARGET_ARCH_ABI)/include
OPENTOK_LIB := /usr/local/opentok/$(TARGET_ARCH_ABI)/lib

LOCAL_MODULE := opentok
LOCAL_SRC_FILES := $(OPENTOK_LIB)/libopentok.so

LOCAL_EXPORT_CPPFLAGS := -Wno-unused
LOCAL_EXPORT_C_INCLUDES := $(OPENTOK_INCL)

include $(PREBUILT_SHARED_LIBRARY)

LOCAL_SHARED_LIBRARIES := opentok

#########################################################
# MyCoolWarez library
include $(CLEAR_VARS)

APP_MODULES := mycoolwarez opentok

# My ass... LOCAL_EXPORT_C_INCLUDES is useless
LOCAL_C_INCLUDES := $(OPENTOK_INCL)

LOCAL_CPP_FLAGS := -Wno-unused
LOCAL_CPP_FLAGS += -Wl,--exclude-libs,ALL

LOCAL_LDLIBS := -llog -landroid
LOCAL_SHARED_LIBRARIES := opentok

LOCAL_MODULE := mycoolwarez
LOCAL_SRC_FILES := mycoolwarez.c

include $(BUILD_SHARED_LIBRARY)

通过上述配置,Android 构建系统会将 OpenTok 复制到与您的库相同的输出目录中。我相信这是由于 APP_MODULES := mycoolwarez opentok 行造成的。

关于android - 如何从 armeabi 以外的位置加载共享对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25740618/

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