2013-04-05 86 views
2

我正在尝试使用NDK构建Android构建系统内的Android本机模块。 我的模块在使用Android模块make命令构建时没有任何错误,可以正确构建。 但是,当我尝试使用NDK生成安装程序时,我正面临着android系统包含文件的问题。 我的模块结构是:使用NDK构建Android本机代码

android 
     | 
     external 
       | 
       MyModule 
        | 
        jni --> Android.mk 
        mysharedobj --> Android.mk 

我的本机模块包括很多Android包括如

#include <JNIHelp.h> 
#include "android_runtime/AndroidRuntime.h" 
#include <gui/Surface.h> 
#include <gui/ISurface.h> 

随着NDK文档的帮助下,我才得以解决包括错误,但我面对somre错误, 例如:

jni/com_my_module_NativeInterface.cpp:3:21: fatal error: JNIHelp.h: No such file or directory compilation terminated. 

- >用于解决JNIHelp.h包括错误,我已经加入下面的行中Android.mk

LOCAL_C_INCLUDES += \ 
    $(LOCAL_PATH)/../../../libnativehelper/include/nativehelper 

这再次多一个错误之后,

jni/../../../libnativehelper/include/nativehelper/JNIHelp.h:27:24: fatal error: cutils/log.h: No such file or directory compilation terminated. 

- >为了解决上述错误我已经改性Android.mk

LOCAL_C_INCLUDES += \ 
    $(LOCAL_PATH)/../../../libnativehelper/include/nativehelper \ 
    $(LOCAL_PATH)/../../../system/core/include \ 

这再次多一个错误后

/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' 

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

回答

0

您应该使用LOCAL_LDLIBS而不是将ndk依赖关系添加到LOCAL_C_INCLUDES。下面的例子是从我的Android.mk:

LOCAL_LDLIBS := -L$(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm/usr/lib -L$(LOCAL_PATH) -llog -lz -lm 

结帐文档,看看你应该为你的需要添加哪些库。

5

我不知道,但尝试把标志-DHAVE_SYS_UIO_HLOCAL_CFLAGS

LOCAL_CFLAGS += -DHAVE_SYS_UIO_H