在今天之前,我将Eclipse 3.8与 Sequoyah插件一起用于Android NDK项目。
但今天我决定使用SDK和NDK将Eclipse改为Juno版本
我非常高兴然后在ADT安装中看到 Android Native Tools ,它将像Sequoyah一样完成同样的工作,但具有调试功能。
我创建了新的Android项目来测试它
添加Android Native Support会创建带有Android.mk,.cpp文件的jni文件夹,与Sequayah一样。
然后我首先得到解决 jni.h 。我得到Sequoyah的类似错误,所以我重建索引并重新启动Eclipse。重新启动后它不会消失
我在C / C ++属性中转到路径和符号。
但是所有需要内置的包括。
(NDK PATH)/ platforms / android-8 / arch-arm / usr / include - 有jni.h,log.h等。
我试图添加额外的dublicate包括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)
答案 0 :(得分:29)
我在C:\Android\android-ndk-r8b
变量中使用PATH
尝试了android-ndk-r8b。
项目编译没有错误。然而,日食“说”Unresolved inclusion: <jni.h>
解决:
NDK Project->New->Folder->Advanced->Link to alternate location(Linked Folder)
浏览路径(例如):C:\Android\android-ndk-r8b\platforms\android-8\arch-arm\usr\include
答案 1 :(得分:3)
您可以通过选择项目的属性
来完成此操作属性 - &gt; C / C ++一般 - &gt;预处理器包括..-&gt;参赛作品 - &gt;设置条目 - &gt; CDT用户设置条目
添加 - &gt;包含目录 - &gt;文件系统路径,并输入包含
的路径ndk/platforms/android-[version]/[arch]/usr/include
答案 2 :(得分:3)
我经常解决移动或重命名项目工作文件夹时可能发生的类似问题。
.settings
.classpath
.cproject
.project
project.properties
此问题也解决了Eclipse 4.3之前忽略的构建系统和用户定义的编译器标志。现在,依赖于这个标志的宏折叠工作正常。
如果更通用:NDK插件可以正确地为你定义包含和其他任何工作所需的工作,但你需要从破碎的垃圾中清理你的项目,最简单的方法是重新导入项目。
答案 3 :(得分:2)
如果您使用的是Eclipse Kepler,则添加NDK的路径包括
属性 - &gt; C / C ++一般 - &gt;路径和符号。
在我的NDK版本上,所需的包含路径是:
C:\ Program Files(x86)\ Android \ android-sdk \ NDK \ android-ndk-r10 \ platforms \ android-L \ arch-arm \ usr \ include。
它会询问您是否要重建。之后错误就消失了。