【问题标题】:Which architectures are required when implementing NDK libraries?实现 NDK 库时需要哪些架构?
【发布时间】:2014-12-19 06:50:14
【问题描述】:

我正在将第三方 API 集成到 Android 应用程序中,并且必须包含他们的 NDK 库。我正在使用带有 gradle 的 Android Studio 并将所有本机库放在:

src/main/jniLibs/

我的问题是:他们在子目录下提供了“.so”库:

armeabi/ mips/ x86/

我需要在我的应用程序中包含 jniLibs 下的所有这些目录吗?

实施说明仅指定了“armeabi”,但我不确定为什么提供其他架构。 mips 目录大约 3.2 MB,x86 目录大约 6MB,所以如果没有必要,我不想将它们打包到我的应用程序中。不知道它们是干什么用的。

【问题讨论】:

  • 取决于您的目标设备是什么。您需要包含您希望在其上运行本机代码的所有设备的架构。
  • 目标设备均为安卓手机和平板电脑>= Api 9
  • 那么你需要找到所有 API >= 9 的 Android 平板电脑和手机的架构。
  • 如果你想支持all,你也必须包含all架构。是的,那里有 Intel 和 MIPS 设备。

标签: android android-ndk


【解决方案1】:

如今,由 MIPS 供电的设备占据的市场份额相对较小,属于市场的低端(主要是零售价)部分。您的应用可能完全适合这个利基市场,或者您可能没有兴趣抓住这个机会(请注意,高端和低端目标的营销方法甚至技术挑战都大不相同)。

另一方面,我看到的所有基于 Intel 的设备都内置了不错的 ARM 仿真,这正是为了弥补本机应用程序开发人员对该平台的不良覆盖率。因此,如果您不关心性能,您可以轻松放弃 x86 支持。

实际上,提供 armv7-a 版本的原生库可能更重要,因为使用高级指令集(尤其是 NEON)可能会在绝大多数情况下提高应用程序的性能用户(如今大多数现代平板电脑和手机都配备了支持这些的芯片组之一)。

此外,在不到一个月的时间内,新的 ABI 将进入市场:64 位 Intel 和 ARM 设备,例如Nexus 6,运行 Android 5.0 Lollipop。

但最终,您最关心的可能是您的数百万用户将从 Play 商店 下载的 APK 文件的大小将是不必要的巨大。为了解决这个问题,有一种不同的技术,它允许您拆分 APK 并上传到 Play 商店的单独版本,每个 ABI 一个版本。诀窍是版本号应该小心管理,以便每个平台的用户都能顺利升级。 Here yours 确实提出了(并且Ashwin S Ashok 改进了)有助于管理此任务的版本编号方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2019-07-28
    • 2018-03-14
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多