Android NDK и локальный флаг режима ARM
в моей текущей настройке сборки собственного кода Android APP_ABI определяется как armeabi-v7a в приложении.МК. Для некоторых библиотек, которые я создаю, я вижу, что LOCAL_ARM_MODE определяется как arm в Android.МК.
Мне нужно расширить эту настройку для сборки для x86. Из другого сообщения появляется, что использование "APP_ABI = all" является лучшим решением. Мне просто интересно, должен ли LOCAL_ARM_MODE быть изменен. Что вообще делает этот флаг?
2 ответов
LOCAL_ARM_MODE можно использовать для определения платформы, на которую нацелено приложение. Чтобы иметь свой Android.Mk setup также для x86 просто включите необходимую информацию для вашего Android.Mk файл-например:
ifeq ($(TARGET_ARCH),arm)
LOCAL_CFLAGS := -mfpu=neon -march=armv6t2 -O9
LOCAL_SRC_FILES := engine-arm.s
endif
ifeq ($(TARGET_ARCH),x86)
LOCAL_CFLAGS := -msse2 -m32 -masm=intel
LOCAL_SRC_FILES := engine-x86.s
endif
для получения дополнительной информации о другой опции при определении цели приложения, посмотрите в / docs / Android-Mk.
источник: скомпилировать код сборки для ARM и X86
хотя это старый пост, я просто хочу указать, что принятый ответ неверен.
LOCAL_ARM_MODE может быть установлен в "arm" или "thumb"и по умолчанию "thumb". "thumb" использует 16-битные инструкции, в то время как" arm " использует 32-битные инструкции. 16-разрядные инструкции меньше, но могут быть медленными для некоторых критически важных приложений. Вот почему для некоторых библиотек люди специально устанавливают этот флаг в "arm", чтобы обеспечить сборку с 32-битными инструкциями. Конечно, этот флаг имеет смысл только тогда, когда вы строите для архитектур arm.
с другой стороны, APP_ABI является правильным флагом для переключения, когда вы хотите построить для различных архитектур, таких как armeabi-* или x86 и многое другое.
для получения дополнительной информации прочитайте документацию для Android.МК