【发布时间】:2014-03-13 20:08:01
【问题描述】:
我刚刚开始使用 Android NDK,我看到大多数使用 Android NDK 的开源应用程序都为多个 CPU 架构编译了 C++ 库。这真的有必要吗?如果是,这是否意味着生成的 apk 将包含多次编译的 C++ 库,因此 apk 会变得非常大?如果有人试图在没有编译库的 CPU 架构上运行该应用程序会发生什么?也非常感谢您提供有关如何为 android 构建 C++ 库的好教程。
【问题讨论】:
-
如果您打算公开您的应用程序,那么您不知道您的用户将在什么架构上运行,因此如果您想要最大的兼容性,这是必要的。请参阅 NDK 中的
docs/CPU-ARCH-ABIS.html和 this。 -
如果没有针对设备架构的编译库,则无法从 Google Play 安装 APK。 Play 将所有本机库视为应用程序功能所必需的。如果还是手动安装,
System.loadLibrary()会抛出异常。根据应用程序的 Java 部分,它可能会强制关闭、正常关闭或以减少的功能运行。 -
一个警告:许多设备支持两种架构。所有 armeabi-v7a 设备都支持 armeabi 作为后备。一些 x86 设备通过模拟器(“libhoudini”)支持 armeabi。
标签: android c++ android-ndk cpu-architecture