tutorial - Android NDK: cómo obtener la arquitectura del compilador en Android.mk dinámicamente
programar en c++ para android (2)
Existe TARGET_ARCH
variable TARGET_ARCH
que mantiene el valor del ABI actual que se está construyendo. Puedes usarlo de la siguiente manera:
ifeq ($(TARGET_ARCH),x86)
LOCAL_CFLAGS := $(COMMON_FLAGS_LIST)
else
LOCAL_CFLAGS := -mfpu=vfp -mfloat-abi=softfp $(COMMON_FLAGS_LIST)
endif
Si especifica APP_ABI := armeabi-v7a armeabi mips x86
o APP_ABI := all
en su Application.mk
, obtendrá todos y cada uno de los valores ABI.
Intento configurar Android.mk para que cruce el código nativo para admitir diferentes chipset, a saber, armeabi, mips y x86. Sé que puedo configurar Application.mk de la siguiente manera para compilar el código fuente para diferentes conjuntos de chips:
APP_ABI := all
Esto activará la secuencia de comandos de compilación de Android-NDK para compilar el código fuente de todos los conjuntos de chips. Sin embargo, quiero decirle dinámicamente a Android.mk que busque diferentes dependencias de bibliotecas estáticas compiladas con diferentes conjuntos de chips.
# Get the architecture info
ARCH := ????
include $(CLEAR_VARS)
LOCAL_MODULE:= mylib
LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
¿Es posible hacer esto? Si es así, ¿alguien puede aconsejar cómo hacerlo?
Actualización : Intenté algo así en Application.mk:
APP_ABI := armeabi armeabi-v7a mips x64
con Android.mk:
# Get the architecture info ARCH := $(APP_ABI) include $(CLEAR_VARS) LOCAL_MODULE:= mylib LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include $(PREBUILT_STATIC_LIBRARY)
pero comete un error con lo siguiente:
The LOCAL_SRC_FILES for a prebuilt static library should only contain one item
que tiene sentido Quiero pasar APP_ABI: = all en Application.mk y ser capaz de referenciarlo dinámicamente. ¿Algunas ideas?
Marque TARGET_ARCH_ABI
:
ifeq($(TARGET_ARCH_ABI), armeabi-v7a)
# v7a-specific stuff
endif