android studio JNI开发
一、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 文件代码:
-
-
-
-
JNIEXPORT jstring JNICALL Java_com_example_myapplication_JNITest_getJNIString
-
(JNIEnv* env, jobject)
-
{
-
return env->NewStringUTF("Hello From JNITest Function(getJNIString)");
-
}
com_example_myapplication_JNITest.h 文件代码:
-
-
/* Header for class com_example_myapplication_JNITest */
-
-
-
-
-
extern "C" {
-
-
/*
-
* 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)");
-
}
-
};
-
-
-
}
-
-
5. 在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_DEPS=true
6. 在终端进入到项目"app/src/main/jni"目录下,执行ndk-build,执行后在app/src/main目录下自动生成lib文件夹,生成好的so库文件就在lib文件夹下,如下图所示:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcijjb
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13