在今天之前,我将 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 等。
我尝试向 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();
}
发光.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_ */
日志.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_ */
发光.c
#include "glow.h"
#include "log.h"
//syntax error
JNIEXPORT void JNICALL Java_com_aristarhys_glow_NativeLib_test(JNIEnv* env, jclass cls)
{
LOGI("HI");
}
安卓.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := glow
LOCAL_SRC_FILES := glow.c
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)