9

今日まで、 AndroidNDKプロジェクト用のSequoyahプラグインでEclipse3.8を使用しています。しかし、今日、私はEclipseをSDKとNDKを使用してJunoリリースに更新することにしました。
私はとても嬉しかったです。ADTインストールでAndroidネイティブツールを見ると、Sequoyahと同じ仕事をしますが、デバッグ機能があります。
テストするために新しいAndroidプロジェクトを作成しました。
Android Native Supportを追加すると、Sequayahと同じように、Android.mk、.cppファイルを使用してjniフォルダーが作成されます。次に、最初にjni.hに未解決になります。Sequoyahでも同様のバグが発生するので、インデックスを再構築してEclipseを再起動します。再起動後、それは消えませんでした。C /C++プロパティのパスとシンボル
に移動します。しかし、必要な組み込みインクルードはすべてあります。
(NDK PATH)/ platforms / android-8 / arch-arm / usr / include -jni.h、log.hなどがあります。jni.hに
重複するインクルードを追加しようとしました。プロジェクトをクリーンアップし、再起動し、インデックスを再構築します。 .ccpを.cに変更すると、未解決のままになります。エラーログにエラーはありませんが、jni関数のエディターで構文エラーが発生しました。

NativeLib.java

package com.aristarhys.glow;

public class NativeLib 
{
private static final String NATIVE_LIB = "glow";
static 
{
    System.loadLibrary(NATIVE_LIB); 
}
  private NativeLib(){};
  public static native void test();
}

glow.h

#ifndef GLOW_H_
#define GLOW_H_

#include <jni.h> //unresolved
//syntax error
JNIEXPORT void JNICALL Java_com_aristarhys_glow_NativeLib_test(JNIEnv* env, jclass cls);
#endif /* GLOW_H_ */

log.h

#ifndef LOG_H_
#define LOG_H_

#include <android/log.h> //unresolved

#define INFO_TAG "[INFO]"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, INFO_TAG, __VA_ARGS__)

#endif /* LOG_H_ */

glow.c

#include "glow.h"
#include "log.h"

//syntax error
JNIEXPORT void JNICALL Java_com_aristarhys_glow_NativeLib_test(JNIEnv* env, jclass cls)
{
LOGI("HI");
}

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := glow
LOCAL_SRC_FILES := glow.c
LOCAL_LDLIBS    := -llog
include $(BUILD_SHARED_LIBRARY)
4

4 に答える 4

29

変数にandroid-ndk-r8bを入れてみました。プロジェクトはエラーなしでコンパイルされました。しかし、日食はそれを「言う」C:\Android\android-ndk-r8bPATH
Unresolved inclusion: <jni.h>

解決しました

NDK Project->New->Folder->Advanced->Link to alternate location(Linked Folder) パスを参照します(例):<code> C:\ Android \ android-ndk-r8b \ platform \ android-8 \ arch-arm \ usr \ include

于 2012-09-25T14:04:33.840 に答える
3

これを行うには、プロジェクトのプロパティを選択します

プロパティ->C/C++一般->プリプロセッサインクルード..->エントリ->設定エントリ->CDTユーザー設定エントリ

[追加]->[ディレクトリのインクルード]->[ファイルシステムパス]を選択し、インクルードのパスを入力します

ndk/platforms/android-[version]/[arch]/usr/include
于 2014-04-28T17:54:07.540 に答える
3

プロジェクトの作業フォルダーを移動または名前変更したときに発生する可能性のある同様の問題を解決することがよくあります。

  1. 環境変数は必要ありません。[設定]>[Android]>[NDK]でNDKの場所を指定するだけです。
  2. プロジェクトをワークスペースの外に移動します。プロジェクトの次のファイル/フォルダーから削除します。

.settings
.classpath
.cproject
.project
project.properties

  1. プロジェクトを再インポートします。Eclipse>新規>その他>Android>既存のコードからのAndroidプロジェクト>次に、プロジェクトでフォルダーをポイントし、Eclipseにそれを検出させ、[プロジェクトをワークスペースにコピー]をオンにして、[OK]/[次へ]をクリックします。
  2. クリーンなプロジェクト。
  3. プロジェクトを右クリック>Androidツール>ネイティブサポートを追加
  4. 再構築し、場合によってはワークスペースを再起動します。

また、これにより、以前はビルドシステムとユーザー定義のコンパイラフラグが無視されていたEclipse4.3の問題が解決されました。現在、このフラグに依存して折りたたまれているマクロは正常に機能します。

より一般的な場合:NDKプラグインは、適切にインクルードやその他の正常に動作するために必要なものを適切に定義できますが、壊れたがらくたからプロジェクトをクリーンアップする必要があります。これを行う最も簡単な方法は、プロジェクトを再インポートすることです。

于 2014-05-05T15:05:28.017 に答える
2

Eclipse Keplerを使用している場合、NDKインクルードを追加するためのパス

プロパティ->C/C++一般->パスとシンボル。

私のバージョンのNDKでは、必要なインクルードパスは次のとおりです。

C:\ Program Files(x86)\ Android \ android-sdk \ NDK \ android-ndk-r10 \ platform \ android-L \ arch-arm \ usr\include。

再構築するかどうかを尋ねられます。その後、エラーはなくなります。

于 2014-07-31T06:39:40.383 に答える