文章目录
注1:android9.0-ndk开发系列文档提供一个ndk编译JNI库,并访问第三方库,APP 直接通过jar接口调用的方法。
注2:本文为个人学习记录,可能存在个别或多处错误,欢迎指正和讨论。
android9.0-ndk开发(1)-第三方库的生成
android9.0-ndk开发(2)-JNI代码
android9.0-ndk开发(3)-Jar打包
android9.0-ndk开发(4)-APP 调用实例
一、创建java 接口代码
myjni.java
package com.sample.jnitest;
public class myjni {
public static native int SetString(String msg);
public static native String GetString();
//load library
static
{
System.loadLibrary("native_jni_test");
}
}
点击Make Project
会自动生成.class 文件:
C:\Users\alex\AndroidStudioProjects\jni_test\app\build\intermediates\javac\debug\classes\com\sample\jnitest\myjni.class
二、自动生成JNI头文件
创建jni文件夹
使用Android Stutio的Terminal 切换到jni目录
使用命令自动生成头文件:
javah -d . -classpath C:\Users\alex\AndroidStudioProjects\jnitest\app\build\intermediates\javac\debug\classes com.sample.jnitest.myjni
生成的头文件如下:
com_sample_jnitest_myjni.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_sample_jnitest_myjni */
#ifndef _Included_com_sample_jnitest_myjni
#define _Included_com_sample_jnitest_myjni
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_sample_jnitest_myjni
* Method: SetString
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_com_sample_jnitest_myjni_SetString
(JNIEnv *, jclass, jstring);
/*
* Class: com_sample_jnitest_myjni
* Method: GetString
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_com_sample_jnitest_myjni_GetString
(JNIEnv *, jclass, jstring);
#ifdef __cplusplus
}
#endif
#