Android的添加本机支持 - 未解决的jni.h,安卓/ log.h等本机、Android、log、jni

2023-09-05 10:35:57 作者:佑铒盯づ

在今天之前我使用Eclipse 3.8是塞阔亚插件为Android NDK项目。 但今天,我决定梳洗Eclipse来朱诺释放与SDK和NDK。 我很开心,然后我看到的 Android原生工具在ADT的安装,这将做到像塞阔亚同样的工作,但与调试功能。 我创建新的Andr​​oid项目进行测试。 添加Android原生支持创建JNI文件夹Android.mk,.cpp文件,以及相同的Sequayah做。 然后我得到第一个未解决为 jni.h 。我得到类似的错误与塞阔亚,所以我需要重新建立索引,并重新启动Eclipse。重新启动后也不会消失。 我去的路径和符号在C / C ++的属性。 但也有所有需要的内置包括。 (NDK PATH)/平台/ Android为8 /弓臂/ usr / include目录 - 有jni.h,log.h等 我trye​​d添加额外的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_ * /
 
3 安卓逆向之JNI静态注册

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:\机器人\的Andr​​oid NDK-R8B 在我的 PATH 变量。 项目编译没有错误。 但是日食说:说未解决的包容:其中,jni.h>

解决的:

NDK项目 - >新建 - >文件夹 - >高级 - >链接到备用位置(链接的文件夹) 浏览路径(例如): C:\机器人\的Andr​​oid 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