Android在运行时检测Atom处理器以选择正确的NDK编译库?

时间:2012-04-10 18:40:55

标签: android android-ndk

许多Android设备将来都会使用Atom处理器。这意味着在创建可以部署到Atom处理器设备的应用程序时,必须包含原子库以及x86处理器。所以我的问题是如何在决定加载哪个本机库之前检测设备上的哪个处理器?选择要加载哪个库的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您不需要手动设置任何东西。只需在Application.mk文件中指定正确的APP_ABI即可构建针对x86的库(从ndk发行版中读取docs \ Application-mk.html文件):

APP_ABI := armeabi armeabi-v7a x86

使用它,您将在libs文件夹下获得三个库。 Android会在运行时自动选择正确的。

如果需要在运行时检测,可以使用随NDK一起分发的cpufeatures库。它提供以下功能:

typedef enum {
    ANDROID_CPU_FAMILY_UNKNOWN = 0,
    ANDROID_CPU_FAMILY_ARM,
    ANDROID_CPU_FAMILY_X86,
    ANDROID_CPU_FAMILY_MAX  /* do not remove */
} AndroidCpuFamily;

/* Return family of the device's CPU */
extern AndroidCpuFamily   android_getCpuFamily(void);

如果您需要在Java端执行相同的功能,您应该阅读/ proc / cpuinfo文件并分析其内容。