- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我上次在 Android Studio 中将 NDK 版本升级到最新版本后遇到了这个问题。我还找到了解决此问题的解决方案。如果有人有这个问题,我希望这是对你最好的问题和答案。请检查我的答案。 最佳答案
我正在开发一个 Android 项目,我正在使用 NDK 调用本地方法。我有两个库(.so 文件),一个位于 libs/armeabi 文件夹中,另一个位于 libs/armeabi-v7a lib
据我所知,Android NDK 中两种支持的 ARM 架构风格之间的区别仅在于支持的 CPU 指令集。真的是这样吗?调用约定、系统调用顺序或其他方面没有区别吗? 我想知道如果我将模块编译为 ARM
我在我的项目中使用一个库来播放视频。该库提供了一个演示项目。演示项目工作正常。 库有几个.Jar文件,一些库类,还有很多.so文件。演示项目将 Jar 文件放在 lib 文件夹中,将 .so 文件放在
在我当前的项目中,我使用了多个 .so 文件。它们位于 armeabi 和 armeabi-v7a 文件夹中。不幸的是,其中一个 .so 文件是 6MB,我需要减小文件大小。我不想使用胖 APK 文件
Xamarin documentation对此有点不清楚。如果我在构建首选项中仅勾选 armeabi 构建我的应用程序,我的应用程序会: 可以在 Play 商店中使用 v7a 设备吗? 在 v7a 设
我正在一个裸项目中使用 eclipse 中的 ndk 构建应用程序的 native 部分。我稍后将 libs/armeabi/中生成的 libmylib.so 复制到另一个使用它的项目。 我注意到 o
我认为所有支持 armeabi-v7a 的设备都应该能够支持 armeabi-v7a-hard。如果是这样,为什么我们不放弃 armeabi-v7a 或者只是使用 armeabi-v7a-hard 替
我一直在使用新的 APK splits Android 0.13 插件的功能,我设法将大部分构建脚本的大小减半,并将构建速度提高了 4 倍。我的应用程序在每个平台上都有超过 20MB 的库,因此优先考
我有一个由第三方供应商提供的 .so 文件,该文件将包含在我的 Android 应用程序中。我无法访问源代码,也无法(轻松)联系供应商。 有没有办法让我通过检查 .so 文件来确定它是否是针对 arm
我的应用程序使用 2 个 native 库,我们称它们为 LibA.so 和 LibB.so。以前,我的应用程序在 kitkat OS 下运行良好,没有任何问题。 现在它在带有 OS 5.0(loll
我有一个依赖于 lib 项目的 android 项目。而lib项目在“libs”目录下有“armeabi”和“armeabi-v7a”目录,这两个目录里面都有一个.so文件。而我自己的项目在libs目
如果没有,Application.mk 文件中的 arm 架构还有哪些其他选项? 最佳答案 另外两个选项是 x86 和 mips。我相信这 4 个是唯一的选择。 关于android - `armeab
我为 Android 6 及更高版本创建了一个旧版应用。我需要包含一些为“armeabi”架构构建的 .so 文件。我没有这些共享对象的源代码,所以我无法为其他架构构建它们。 目标设备的架构是“arm
我正在使用 openTok 库进行视频聊天,libopentok.so 文件将被放入“libs”下的“armeabi”文件夹中。我的项目已经有 jni,它在编译后将自己的文件夹(如 armeabi、a
eclipse /Cygwin NDK 8c 构建共享库 切换到 armeabi-v7a 后,我无法再启动 gdbserver。我在网上搜索了几个小时,但找不到专门处理 armeabi-v7a 调试问
我在探索开源时多次看到这个库 (armeabi)。 我在网上搜索了它的解释,但我发现的所有结果都在谈论它而不是定义它。 这个 armeabi 是什么?他们为什么在 Android 应用程序中使用它?
Google 最近通知开发者,应用必须兼容 64 位。 我们必须检查包是否包含 arm64-v8a 和 x86_64 文件夹。 在我的应用程序中,我有 arm64-v8a 文件夹,还有“简单”“arm
我成功地为 Android 编译了 PJSIP 库。当我为默认架构 armeabi 构建时,示例项目可以正常工作。现在我尝试为 arch 编译库,例如 armeabi-v7a 和 arm64-v8a。
我正在使用一些预构建的 android 库,将它们粘贴到我的 jni 文件夹中并将其放入 Android.mk # Add prebuilt libgdx include $(CLEAR_VARS)
我是一名优秀的程序员,十分优秀!