上饶招聘网站建设公司,做的网站百度上可以搜到吗,wordpress 还原备份,青岛网站定制多少钱一、JNI的作用#xff1a;
1.使Java与本地其他类型语言#xff08;C、C#xff09;交互#xff1b;
2.在Java代码调用C、C等语言的代码 或者 C、C调用Java代码。
由于JAVA具有跨平台的特点#xff0c;所以JAVA与本地代码的交互能力弱#xff0c;采用JNI特性可以增强JA…一、JNI的作用
1.使Java与本地其他类型语言C、C交互
2.在Java代码调用C、C等语言的代码 或者 C、C调用Java代码。
由于JAVA具有跨平台的特点所以JAVA与本地代码的交互能力弱采用JNI特性可以增强JAVA与本地代码的交互能力。
二、AndroidStudion中JNI的使用方法
1、在AS点击File -Setting下载NDK 和 CMake。 2、配置环境变量
path中添加环境变量C:\Users\a\AppData\Local\Android\Sdk\ndk\26.0.10404224\build我的环境。
配置的是NDK在系统里安装的位置。 三、测试demo
1. 新建一个工程JNITest在工程的包名下新建一个JAVA类类名为JNITest
package com.example.myapplication;public class JNITest {public native String getJNIString();
}2. 使用javac命令编译JNITest.java文件生成JNITest.class文件。
在工程目录下执行如下命令javac .\JNITest.java 执行完毕后可以看到包名下面生成了对应的class文件如下图所示 3. 生成JNITest.class文件后需要生成对应的.h文件
在工程目录下执行如下命令javah -d app/src/main/jni -classpath app/src/main/java/ -jni -v com.example.myapplication.JNITest
执行完毕后可以看到在app/src/main目录下生成了jni目录目录里生成了对应的.h文件文件名为com_example_myapplication_JNITest.h
4. 在jni目录下新建一个cpp文件命名为JNITest.cpp文件里实现JNITest.java文件里定义的本地方法
右击jni-New-C/C Source File-输入JNITest
JNITest.cpp 文件代码
#include jni.h
#include JNITest.hJNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString(JNIEnv* env, jobject)
{return env-NewStringUTF(Hello From JNITest Function(getJNIString));
}com_example_myapplication_JNITest.h 文件代码
#include jni.h
/* Header for class com_example_myapplication_JNITest */#ifndef _Included_com_example_myapplication_JNITest
#define _Included_com_example_myapplication_JNITest
#ifdef __cplusplus
extern C {
#endif
/** Class: com_example_myapplication_JNITest* Method: getJNIString* Signature: ()Ljava/lang/String;*/
JNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString(JNIEnv *, jobject){{return env-NewStringUTF(Hello From JNITest Function(getJNIString));}};#ifdef __cplusplus
}
#endif
#endif5. 在jni目录下再新建一个Android.mk文件
右击jni目录-New-File-输入Android.mk在文件里写入如下配置
LOCAL_PATH : $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE : JNITest
LOCAL_SRC_FILES : JNITest.cpp
include $(BUILD_SHARED_LIBRARY)
再新建文件夹Application.mk写入配置
APP_PLATFORM : android-21
APP_ALLOW_MISSING_DEPStrue
6. 在终端进入到项目app/src/main/jni目录下执行ndk-build执行后在app/src/main目录下自动生成lib文件夹生成好的so库文件就在lib文件夹下如下图所示