在今天之前我使用Eclipse 3.8是塞阔亚插件为Android NDK项目。 但今天,我决定梳洗Eclipse来朱诺释放与SDK和NDK。 我很开心,然后我看到的 Android原生工具在ADT的安装,这将做到像塞阔亚同样的工作,但与调试功能。 我创建新的Android项目进行测试。 添加Android原生支持创建JNI文件夹Android.mk,.cpp文件,以及相同的Sequayah做。 然后我得到第一个未解决为 jni.h 。我得到类似的错误与塞阔亚,所以我需要重新建立索引,并重新启动Eclipse。重新启动后也不会消失。 我去的路径和符号在C / C ++的属性。 但也有所有需要的内置包括。 (NDK PATH)/平台/ Android为8 /弓臂/ usr / include目录 - 有jni.h,log.h等 我tryed添加额外的dublicate包括了jni.h,清洁工程,重新启动,重建索引,更改.ccp为.c来,它保持未解决。我在错误日志中没有错误,但在编辑器中的语法错误的JNI功能。
NativeLib.java
包com.aristarhys.glow;
公共类NativeLib
{
私有静态最后弦乐NATIVE_LIB =发光;
静止
{
的System.loadLibrary(NATIVE_LIB);
}
私人NativeLib(){};
公共静态本地无效测试();
}
glow.h
#ifndef的GLOW_H_
#定义GLOW_H_
#包括< jni.h> //未解决
//语法错误
JNIEXPORT无效JNICALL Java_com_aristarhys_glow_NativeLib_test(JNIEnv的* ENV,JCLASS CLS);
#ENDIF / * GLOW_H_ * /
log.h
#ifndef的LOG_H_
#定义LOG_H_
#包括<安卓/ log.h> //未解决
#定义INFO_TAG[信息]
#定义LOGI(...)__android_log_print(ANDROID_LOG_INFO,INFO_TAG,__VA_ARGS__)
#ENDIF / * LOG_H_ * /
glow.c
的#includeglow.h
#包括log.h
//语法错误
JNIEXPORT无效JNICALL Java_com_aristarhys_glow_NativeLib_test(JNIEnv的* ENV,JCLASS CLS)
{
LOGI(HI);
}
Android.mk
LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)
LOCAL_MODULE:=发光
LOCAL_SRC_FILES:= glow.c
LOCAL_LDLIBS:= -llog
包括$(BUILD_SHARED_LIBRARY)
解决方案
我试过的 Android的NDK-R8B 与 C:\机器人\的Android NDK-R8B
在我的 PATH
变量。
项目编译没有错误。 但是日食说:说未解决的包容:其中,jni.h>
解决的:
NDK项目 - >新建 - >文件夹 - >高级 - >链接到备用位置(链接的文件夹)
浏览路径(例如): C:\机器人\的Android NDK,R8B \平台\ Android为8 \弓臂的\ usr \包括
Before today i use Eclipse 3.8 with Sequoyah plugin for Android NDK project. But today i decide to freshen Eclipse to Juno release with SDK and NDK. I was very happy then i see Android Native Tools in ADT installation, which will do the same job like Sequoyah, but with debug feature. I created new Android Project to test it. Adding Android Native Support create jni folder with Android.mk, .cpp file, well same that Sequayah do. Then i get first unresolved to jni.h. I get similar bug with Sequoyah, so i rebuild index and restart Eclipse. After restart it not disappeared. I go to Paths And Symbols at C/C++ properties. But there are all that needed built-in includes. (NDK PATH)/platforms/android-8/arch-arm/usr/include - there are jni.h, log.h etc. I tryed to add extra dublicate includes to jni.h, clean project, restart, rebuild index, change .ccp to .c, it stays unresolved. I got no errors in error log, but syntax errors in editor on jni functions.
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)
解决方案
I've tried android-ndk-r8b with C:\Android\android-ndk-r8b
in my PATH
variable.
Project compiled without error. However eclipse "says" that Unresolved inclusion: <jni.h>
solved:
NDK Project->New->Folder->Advanced->Link to alternate location(Linked Folder)
Browse the path(for example):C:\Android\android-ndk-r8b\platforms\android-8\arch-arm\usr\include