unity studio ndk instalar java android android-ndk

java - studio - No hay regla para hacer NDK objetivo



jni java android (2)

Creo que es cierto para definir la ruta local después de incluir sub makefiles.

LOCAL_PATH := $(call my-dir) MY_PATH := $(LOCAL_PATH) include $(call all-subdir-makefiles) include $(CLEAR_VARS) LOCAL_PATH := $(MY_PATH) LOCAL_LDLIBS := -llog -ldl LOCAL_MODULE := rmsdk LOCAL_SRC_FILES := native.c include $(BUILD_SHARED_LIBRARY)

Se ve mal Creo que puedes intentar esto:

include $(call all-subdir-makefiles) include $(CLEAR_VARS) LOCAL_PATH := $(call my-dir) LOCAL_LDLIBS := -llog -ldl LOCAL_MODULE := rmsdk LOCAL_SRC_FILES := native.c include $(BUILD_SHARED_LIBRARY)

Espero eso ayude.

Estoy compilando fuentes nativas y agregando las dependencias con .a libs y esos archivos de encabezado relativos con la siguiente estructura.

/ jni /

Android.mk

LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) include $(CLEAR_VARS) LOCAL_LDLIBS := -llog LOCAL_MODULE := ndk1 LOCAL_SRC_FILES := native.c LOCAL_STATIC_LIBRARY := mschema include $(BUILD_SHARED_LIBRARY)

nativo.c

/ jni / prereqs /

Android.mk

LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) include $(CLEAR_VARS)

--Utilizado para llamar a las subcarpetas mk archivos

/ jni / prereqs / mschema /

Android.mk

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=mschema LOCAL_SRC_FILES :=libmschema.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include include $(PREBUILT_STATIC_LIBRARY)

libmschema.a

/ jni / prereqs / mschema / include

Archivos de encabezado. (.h)

Pero al intentar ndk-build (NDK5) obtuve el siguiente error.

marcos@marcos-AY675AA-AC4-s5320br:~/dev/workspace/rmsdk.native.wraper$ ndk-buildmake: *** No rule to make target `/home/marcos/dev/workspace/rmsdk.native.wraper/jni/prereqs/mschema/native.c'', needed by `/home/marcos/dev/workspace/rmsdk.native.wraper/obj/local/armeabi/objs/ndk1/native.o''. Stop.

Mientras escribía, noté que el error es sobre /home/marcos/dev/workspace/rmsdk.native.wraper/jni/prereqs/mschema/native.c'' and actually this file is under / home / marcos / dev / workspace / rmsdk. native.wraper / jni / native.c '', ¿qué hay de malo en mis archivos make?

El problema podría evitarse cambiando el primer Android.mk a lo siguiente:

LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) LOCAL_PATH :=/home/marcos/dev/workspace/rmsdk.native.wraper/jni include $(CLEAR_VARS) LOCAL_LDLIBS := -llog LOCAL_MODULE := ndk1 LOCAL_SRC_FILES := native.c LOCAL_STATIC_LIBRARY := mschema include $(BUILD_SHARED_LIBRARY)

Pero se ve mal. ¿Hay un mejor enfoque?


Desde los documentos en NDK 5, la solución es crear una variable local.

my-dir Devuelve la ruta del último Makefile incluido, que normalmente es el directorio actual de Android.mk. Esto es útil para definir LOCAL_PATH al inicio de tu Android.mk como con:

LOCAL_PATH := $(call my-dir) IMPORTANT NOTE: Due to the way GNU Make works, this really returns the path of the *last* *included* *Makefile* during the parsing of build scripts. Do not call my-dir after including another file.

Entonces ... para resolver este problema, cambio mi Android.mk a lo siguiente.

LOCAL_PATH := $(call my-dir) MY_PATH := $(LOCAL_PATH) include $(call all-subdir-makefiles) include $(CLEAR_VARS) LOCAL_PATH := $(MY_PATH) LOCAL_LDLIBS := -llog -ldl LOCAL_MODULE := rmsdk LOCAL_SRC_FILES := native.c include $(BUILD_SHARED_LIBRARY)

Y sus obras.