- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个 Android 项目,我正在使用 NDK 调用本地方法。我有两个库(.so 文件),一个位于 libs/armeabi
文件夹中,另一个位于 libs/armeabi-v7a
lib 文件夹中。
如果我尝试运行该应用程序,它不会加载 /libs/armeabi
文件夹中的库。如果我将库文件移动到 libs/armeabi-v7a
文件夹,它会加载库,但在 5 到 10 分钟后它会崩溃并给出段错误。
我想知道库的位置(不同的文件夹)是否会导致此问题。
最佳答案
安装应用程序时,包管理器服务将扫描 .apk 并查找以下形式的任何共享库:
lib/<primary-abi>/lib<name>.so
如果找到,则将其复制到 $APPDIR/lib/lib.so 下,其中 $APPDIR 对应于应用程序的特定数据目录。
如果没有找到,并且定义了辅助 ABI,则该服务将扫描以下形式的共享库:
lib/<secondary-abi>/lib<name>.so
如果找到任何内容,则将其复制到 $APPDIR/lib/lib.so 下。
对于小学/中学的能力,
Android 系统在运行时知道它支持哪些 ABI。更准确地说,最多两个构建特定的系统属性用于指示:
设备的“主要”ABI,对应于系统镜像本身使用的机器代码。
可选的“辅助”ABI,对应于系统镜像也支持的另一个 ABI。
例如,典型的基于 ARMv5TE 的设备只会将主要 ABI 定义为“armeabi”,而不会定义次要 ABI。
另一方面,典型的基于 ARMv7 的设备会将主要 ABI 定义为“armeabi-v7a”,将次要 ABI 定义为“armeabi”,因为它可以运行为它们生成的应用程序 native 二进制文件。
此机制可确保在安装时自动从包中提取适用于目标设备的最佳机器码。
关于android - armeabi 和 armeabi-v7a 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249501/
我上次在 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)
我是一名优秀的程序员,十分优秀!