2013-04-05 109 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