Android JNI關於錯誤: 找不到 'xxx.xxx.xxx.JniUtil' 的類文件記錄

這兩天處理JNI的事情,發現以前處理過的問題,如今有些忘記了,以此記錄,避免以後遺忘。

1、先建立個JniUtil類,以實現JNI類調用

 

public class JniUtil {
    static {
        System.loadLibrary("jniUtil");
    }
    public native String hello();
}

2、這裏可以分兩種情況處理,

  (1)用Make Project生成JniUtil.class文件

  (2)命令生成JniUtil.class

javac JniUtil.java

3、根據JniUtil.class生成.h文件

打開Android Studio的Terminal或者操作系統自帶的Terminal。切換到代碼的頂級目錄app/src/main,命令爲:

javah -d jni -classpath <class文件的路徑> <包名+類名>

(1)make生成的class

avah -d jni -classpath E:\AndroidProjects\WbaseTestApp\app\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes  com.up.threevison.wbasetestapp.JniUtil

(2)javac生成的class

E:\AndroidProjects\WbaseTestApp\app\src\main>javah -d jni -classpath .\java com.up.threevison.wbasetestapp.JniUtil

4、對應的c頭文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_up_threevison_wbasetestapp_JniUtil */

#ifndef _Included_com_up_threevison_wbasetestapp_JniUtil
#define _Included_com_up_threevison_wbasetestapp_JniUtil
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_up_threevison_wbasetestapp_JniUtil
 * Method:    hello
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_up_threevison_wbasetestapp_JniUtil_hello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章