Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Android обнаруживает процессор Atom во время выполнения, чтобы выбрать правильную скомпилированную библиотеку NDK?

Автор вопроса: Code DroidОтветов: 1

В будущем многие Android-устройства будут использовать процессор Atom. Это означает, что при создании приложения, которое можно развернуть на устройстве с процессором Atom, необходимо будет включить собственную библиотеку для атома, а также для процессора x86. Итак, мой вопрос: как определить, какой процессор находится на устройстве, прежде чем решить, какую нативную библиотеку загрузить? Каков наилучший способ выбрать, какую библиотеку загрузить?

androidandroid-ndk

Ответы

Ответ 1 · рейтинг 2 · Mārtiņš Možeiko

Вам не нужно ничего декодировать вручную. Просто создайте свою библиотеку, ориентированную на x86, указав правильный APP_ABI в файле Application.mk (прочитайте файл docs\Application-mk.html из дистрибутива ndk):

APP_ABI := armeabi armeabi-v7a x86

Используя это, вы получите три библиотеки в папке libs. Android автоматически выберет правильный во время выполнения.

Если вам нужно обнаружить во время выполнения, вы можете использовать библиотеку cpufeatures, которая распространяется с NDK. Он обеспечивает следующую функцию:

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 и проанализировать его содержимое.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы