2

NDK を使用して Android ビルド システム内に Android ネイティブ モジュールをビルドしようとしています。私のモジュールは、Android モジュールの make コマンドを使用してビルドするときに、エラーなしで正しくビルドされます。しかし、NDK ビルド セットアップを使用しようとすると、Android システムのインクルード ファイルに問題が発生します。私のモジュール構造は次のとおりです。

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

私のネイティブモジュールには、次のような多くのアンドロイドが含まれています

#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 システムのインクルード ファイルを使用するネイティブ モジュールを正常にビルドするにはどうすればよいですか? 私を助けてください。

4

2 に答える 2

5

よくわかりませんが、フラグ-DHAVE_SYS_UIO_HをLOCAL_CFLAGSに付けてみてください:

LOCAL_CFLAGS += -DHAVE_SYS_UIO_H
于 2013-11-21T14:43:37.063 に答える
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

ドキュメントをチェックアウトして、ニーズに合わせて追加する必要があるライブラリを確認してください。

于 2013-04-22T23:00:21.613 に答える