Android NDK生成文件和Maven构建问题

Android NDK生成文件和Maven构建问题,maven,compilation,android-ndk,build-process,Maven,Compilation,Android Ndk,Build Process,我只是想说,我对androidndk还很陌生,所以我一直在尝试阅读Androids文档。我在Maven中使用它时遇到了一些问题(通过插件)。下面是我的maven插件片段以及我的Android.mk文件 pom.xml(插件部分): 所以我得到的错误如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := my-lib LOCAL_SRC_FILES := MyClass1.cpp \ MyF

我只是想说,我对androidndk还很陌生,所以我一直在尝试阅读Androids文档。我在Maven中使用它时遇到了一些问题(通过插件)。下面是我的maven插件片段以及我的Android.mk文件

pom.xml(插件部分):

所以我得到的错误如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := my-lib

LOCAL_SRC_FILES := MyClass1.cpp \
     MyFile1.c \
     MyClass2.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH) \
    $(LOCAL_PATH)/../target/native/javah

LOCAL_LDLIBS    := -llog
LOCAL_CPP_FEATURES := rtti exceptions

LOCAL_CFLAGS += \
    -D _NX_FEATURE_ATOMIC_C_PLUS_PLUS_11_ \
    -D _NX_FEATURE_CAN_BUS_INTERFACE_ROUTER_ \
    -D _NX_FEATURE_CAN_BUS_CREATED_BY_CONFIGURATION_ \
    -D _NX_FEATURE_CAN_BUS_TC_SERVICE_ \
    -D _NX_FEATURE_CRC_ \
    -D _NX_FEATURE_EXCEPTIONS_ \
    -D _NX_FEATURE_FILE_SUPPORT_CRT_ \
    -D _NX_FEATURE_FLOAT_64_ \
    -D _NX_FEATURE_LOG_ \
    -D _NX_FEATURE_MUTEX_PTHREAD_ \
    -D _NX_FEATURE_POSIX_SIGNAL_HANDLER_ \
    -D _NX_FEATURE_RANDOM_ \
    -D _NX_FEATURE_SECURITY_UNSET_INTENTIONALLY_ \
    -D _NX_FEATURE_THREAD_ \
    -D _NX_FEATURE_TRACE_STDIO_ \
    -D _NX_FEATURE_TCP_IP_ \
    -D _NX_FEATURE_XML_PARSER_ \
    -D NX_CUSTOMER_FAR \
    -D __STDC_FORMAT_MACROS
    -D HAVE_FTRUNCATE=1 \
    -D HAVE_GETCWD=1 \
    -D HAVE_GETPAGESIZE=1 \
    -D HAVE_GETTIMEOFDAY=1 \
    -D HAVE_INTTYPES_H=1 \
    -D HAVE_MALLOC=1 \
    -D HAVE_MEMCHR=1 \
    -D HAVE_MEMMOVE=1 \
    -D HAVE_MEMORY_H=1 \
    -D HAVE_MEMSET=1 \
    -D HAVE_MKDIR=1 \
    -D HAVE_MMAP=1 \
    -D HAVE_MUNMAP=1 \
    -D HAVE_NETDB_H=1 \
    -D HAVE_PTRDIFF_T=1 \
    -D HAVE_RMDIR=1 \
    -D HAVE_SELECT=1 \
    -D HAVE_SOCKET=1 \
    -D HAVE_STDDEF_H=1 \
    -D HAVE_STDINT_H=1 \
    -D HAVE_STDLIB_H=1 \
    -D HAVE_STRINGS_H=1 \
    -D HAVE_STRING_H=1 \
    -D HAVE_STRPBRK=1 \
    -D HAVE_STRRCHR=1 \
    -D HAVE_STRSPN=1 \
    -D HAVE_STRTOUL=1 \
    -D HAVE_STRTOULL=1 \
    -D HAVE_SYS_PARAM_H=1 \
    -D HAVE_SYS_SOCKET_H=1 \
    -D HAVE_SYS_STAT_H=1 \
    -D HAVE_SYS_TIME_H=1 \
    -D HAVE_SYS_TYPES_H=1 \
    -D HAVE_TERMIOS_H=1 \
    -D HAVE_UNISTD_H=1

LOCAL_STATIC_LIBRARIES := $(ANDROID_MAVEN_PLUGIN_LOCAL_STATIC_LIBRARIES)    
LOCAL_SHARED_LIBRARIES := $(ANDROID_MAVEN_PLUGIN_LOCAL_SHARED_LIBRARIES)

include $(BUILD_SHARED_LIBRARY)

# Important: Must be the last import in order for Android Maven Plugins paths to work
include $(ANDROID_MAVEN_PLUGIN_MAKEFILE)
...\android-ndk-r10e\ndk-build.cmd -C ...\MyRoot APP_BUILD_SCRIPT=jni/Android.mk NDK_APPLICATION_MK=jni/Application.mk NDK_TOOLCHAIN=x86_64-4.9 APP_ABI=x86_64 V=1 -B NDK_DEBUG=1 NDK_LIBS_OUT=...\MyRoot\target\ndk-libs NDK_OUT=...\MyRoot\target\ndk-obj MyRoot

make.exe: *** No rule to make target `MyRoot'.  Stop.
我不知道为什么MyRoot会被使用。当我用“MyRoot”手动执行命令时,构建过程开始,但它似乎没有使用我的Android.mk文件(LOCAL_C_INCLUDES)中列出的任何include文件


这可能有点傻,但我在这里不知所措。感谢您的帮助

在命令末尾有一个浮动的“MyRoot”。我很确定删除它会解决这个错误

...\android-ndk-r10e\ndk-build.cmd -C ...\MyRoot \
APP_BUILD_SCRIPT=jni/Android.mk NDK_APPLICATION_MK=jni/Application.mk \
NDK_TOOLCHAIN=x86_64-4.9 APP_ABI=x86_64 V=1 -B NDK_DEBUG=1 \
NDK_LIBS_OUT=...\MyRoot\target\ndk-libs \
NDK_OUT=...\MyRoot\target\ndk-obj MyRoot # this MyRoot is unnecessary

如果您的Application.mk和目录结构设置正确,您还会发现许多选项(APP_ABI、NDK_工具链等)都是不必要的

是的,这就是问题所在。我提到,如果我删除它,它会在包含错误之外工作。使用Maven和Android.mk,我如何自动地把它弄出来?这需要自动化抱歉,不清楚您要删除哪个“MyRoot”。如果删除“MyRoot”,你能发布你得到的错误吗?它只是编译错误,因为它没有查看本地的头文件。我认为这是下一步,但现在,如果我能从自动构建过程的末尾获得MyRoot,或者插件或.mk文件中我认为我做错了的东西,那就太好了。
...\android-ndk-r10e\ndk-build.cmd -C ...\MyRoot \
APP_BUILD_SCRIPT=jni/Android.mk NDK_APPLICATION_MK=jni/Application.mk \
NDK_TOOLCHAIN=x86_64-4.9 APP_ABI=x86_64 V=1 -B NDK_DEBUG=1 \
NDK_LIBS_OUT=...\MyRoot\target\ndk-libs \
NDK_OUT=...\MyRoot\target\ndk-obj MyRoot # this MyRoot is unnecessary