使用NDK构建Android本机代码

Cha*_*u N 2 android android-ndk

我正在尝试使用NDK在Android构建系统中修改Android本机模块.使用Android模块make命令构建时,我的模块正确构建,没有任何错误.但是当我尝试使用NDK构建设置时,我面临着android系统包含文件的问题.我的模块结构是:

android
       |
       external
              |
              MyModule
                     |
                     jni --> Android.mk
                     mysharedobj --> Android.mk
Run Code Online (Sandbox Code Playgroud)

我的Native模块包含许多android包括如

#include <JNIHelp.h>
#include "android_runtime/AndroidRuntime.h"
#include <gui/Surface.h>
#include <gui/ISurface.h>
Run Code Online (Sandbox Code Playgroud)

在NDK文档的帮助下,我能够解决包含错误,但我遇到了错误,例如:

jni/com_my_module_NativeInterface.cpp:3:21: fatal error: JNIHelp.h: No such file or directory compilation terminated.
Run Code Online (Sandbox Code Playgroud)

- >为了解决JNIHelp.h包含错误,我在Android.mk中添加了以下行

LOCAL_C_INCLUDES += \
    $(LOCAL_PATH)/../../../libnativehelper/include/nativehelper
Run Code Online (Sandbox Code Playgroud)

在此之后再次出现一个错误,

jni/../../../libnativehelper/include/nativehelper/JNIHelp.h:27:24: fatal error: cutils/log.h: No such file or directory compilation terminated.
Run Code Online (Sandbox Code Playgroud)

- >为了解决上面的错误,我修改了Android.mk

LOCAL_C_INCLUDES += \
    $(LOCAL_PATH)/../../../libnativehelper/include/nativehelper \
    $(LOCAL_PATH)/../../../system/core/include \
Run Code Online (Sandbox Code Playgroud)

在此之后再次出现一个错误

/home/user/android-ndk-r8e/platforms/android-3/arch-arm/usr/include/linux/uio.h:18:8: error: redefinition of 'struct iovec'
jni/../../../system/core/include/cutils/uio.h:33:8: error: previous definition of 'struct iovec'
Run Code Online (Sandbox Code Playgroud)

如何使用android系统包含文件成功构建本机模块?请帮我.

bon*_*nyz 5

我不确定,但是尝试将标志-DHAVE_SYS_UIO_H放在LOCAL_CFLAGS上:

LOCAL_CFLAGS += -DHAVE_SYS_UIO_H
Run Code Online (Sandbox Code Playgroud)