Android 添加 native 支持 - Unresolved jni.h、android/log.h 等

标签 android c android-ndk java-native-interface

在今天之前,我将 Eclipse 3.8 与 Sequoyah 插件 用于 Android NDK 项目。 但今天我决定使用 SDK 和 NDK 将 Eclipse 更新为 Juno 版本。
我很高兴然后我在 ADT 安装中看到 Android Native Tools,它将完成与 Sequoyah 相同的工作,但具有调试功能。
我创建了新的 Android 项目来测试它。
添加 Android native 支持,使用 Android.mk、.cpp 文件创建 jni 文件夹,与 Sequayah 所做的一样。 然后我首先得到 Unresolved 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_ */

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_ */

发光.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)

最佳答案

我试过了 android-ndk-r8bC:\Android\android-ndk-r8b在我的 PATH多变的。 项目编译无误。
然而 eclipse “说”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

关于Android 添加 native 支持 - Unresolved jni.h、android/log.h 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12584255/

相关文章:

android - 使用 Kotlin 在 Android 中编辑 SharedPreferences 标签

Android Studio - CheckBox 使应用程序崩溃

c - 通过C中的共享内存将结构传递给进程

使用 C 结构体定制订单

c++ - 在派生类型中使用可分配的目标变量

android - Android 的巨大 UDP 延迟/滞后

android - 我想在 Android 中的 Multi AutoCompleteTextView 右侧添加图标

android - Sencha Touch 2.0支持最低的最低Android API级别?

c++ - 使用 Cocos2d-x api 在 Android 上打开文件

gnuSTL_shared 的 Android NDK 构建问题