usar tutorial studio programar para ndk español cppdroid como android android-ndk

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