在我目前的Android本机代码构建设置中,APP_ABI被定义为Application.mk中的armeabi-v7a。对于我正在构建的一些库,我看到LOCAL_ARM_MODE在Android.mk中被定义为arm。
我还需要扩展此设置以构建x86。从另一篇文章中可以看出,使用“APP_ABI = all”是一个更好的解决方案。我只是想知道是否还必须更改LOCAL_ARM_MODE。无论如何,这面旗帜会做什么?
答案 0 :(得分:6)
LOCAL_ARM_MODE可用于定义应用程序所针对的平台。要为x86设置Android.mk,只需在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。
答案 1 :(得分:4)
虽然这是一篇旧帖子,但我只想指出接受的答案是不正确的。
LOCAL_ARM_MODE可以设置为" arm"或"拇指"并且默认为"拇指"。 "拇指"使用16位指令而#34; arm"使用32位指令。 16位指令较小,但对于某些性能关键应用程序可能会很慢。这就是为什么对于某些图书馆来说,人们专门将这面旗帜设置为“#34; arm"确保使用32位指令构建。当然,只有在为arm架构构建时,此标志才有意义。
另一方面,当你想为不同的架构(如armeabi- *或x86等)构建时,APP_ABI是一个正确的标志。
有关详细信息,请参阅Android.mk
的文档