gpt4 book ai didi

Android:包括用于不同架构的 ndk .so 库,应用程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:06 24 4
gpt4 key购买 nike

我不是 Android 开发的新手,但在谈到 NDK 和 .so 库时我完全是个新手。

我正在构建的应用程序使用第三方 SDK,它们提供了一些 .so 文件。他们为我提供了每个架构的 .so 文件(到目前为止:arm64-v8a、armeabi、armeabi-v7a、mips、mips64、x86、x86_64)。

我需要包含一个新的第三方 SDK,但他们只为 armeabi-v7a 和 x86 提供 .so 文件。当我尝试运行我的应用程序时,它崩溃了,并且我从 SDK 中收到错误(我在 logcat 上看到它),指出:

SDKNAME currently only provides prebuilt library for armeabi-v7a and x86 architectures

这是常见的情况吗?有没有办法解决这种情况?

提前致谢

最佳答案

您需要为您的应用程序支持的所有架构提供所有库。

安装 APK 后,安装程序会扫描 APK 以了解其支持的架构。如果 APK 不包含 native 代码,则它支持所有架构。但是,如果它确实包含 native 代码,则它仅支持 APK 中包含的那些架构。大多数现代设备支持不止一种架构;例如,设备可能支持 arm64-v8aarmeabi-v7a,或者 x86_64x86,或者 x86armeabi-v7a(通过仿真)。在安装时,它会查看包含哪些架构,从中选择最喜欢的架构,并安装该架构中的所有库,忽略其余架构。 (较旧的 Android 版本可能无意中在上述情况下显示出略有不同、不一致的行为 - 请参阅 https://stackoverflow.com/a/25648943/3115956。)

现在,如果您包含的库之一出现在所有可用架构的构建中,而另一个仅支持少数几个,则安装程序可能会选择例如arm64-v8a,因此无法获取所有必需的库。

因此,您只能支持所有库提供的架构的交集。

为此,您可以从提供更多架构的 SDK 中手动删除多余的目录,或者如果使用 Gradle 构建您的 APK,您可以将其添加到 NDK block 中:

abiFilters 'armeabi-v7a', 'x86'

关于Android:包括用于不同架构的 ndk .so 库,应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41269945/

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