【问题标题】:Android native code building with NDK使用 NDK 构建 Android 原生代码
【发布时间】:2013-04-05 17:39:15
【问题描述】:

我正在尝试使用 NDK 在 Android 构建系统中构建一个 Android 本机模块。 使用 Android 模块 make 命令构建时,我的模块可以正确构建,没有任何错误。 但是当我尝试使用 NDK 构建设置时,我遇到了 android 系统包含文件的问题。 我的模块结构是:

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

我的 Native 模块包括许多 android 包括,例如

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

在 NDK 文档的帮助下,我能够解决包含错误,但我面临严重错误, 例如:

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系统包含文件的native模块? 请帮帮我。

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

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

    LOCAL_CFLAGS += -DHAVE_SYS_UIO_H
    

    【讨论】:

      【解决方案2】:

      您应该使用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
      

      查看文档以查看应根据需要添加哪些库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 2013-08-27
        • 2021-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多