Android JNI使用方法
经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下。android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和C/C++代码。其中C/C++代码用于生成库文件,Java代码用于引用C /C++库文件以及调用C/C++方法。
android Java部分代码:
jnitest.javapackage com.hello.jnitest;import android.app.Activity;import android.os.Bundle;public class jnitest extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Nadd test = new Nadd();setTitle("The Native Add Result is "+String.valueOf(test.nadd(10, 20)));}}Nadd.javapackage com.hello.jnitest;public class Nadd {static {System.loadLibrary("hello_jni");}public native int nadd(int a, int b);}
#define LOG_TAG "hello-JNI" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <assert.h> #include "jni.h" #include "JNIHelp.h" #include "android_runtime/AndroidRuntime.h" static jint com_hello_jnitest_jnitest_nadd(JNIEnv *env, jobject obj, jint a, jint b) { return (a * b); } static JNINativeMethod gMethods[] = { {"nadd", "(II)I", (void *)com_hello_jnitest_jnitest_nadd}, }; static int register_android_test_hello(JNIEnv *env) { return android::AndroidRuntime::registerNativeMethods(env, "com/hello/jnitest/Nadd", gMethods, NELEM(gMethods)); } jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env = NULL; if (vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) { printf("Error GetEnv\n"); return -1; } assert(env != NULL); if (register_android_test_hello(env) < 0) { printf("register_android_test_hello error.\n"); return -1; } return JNI_VERSION_1_4; }
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_PRELINK_MODULE := false LOCAL_SRC_FILES := \ com_hello_jnitest.cpp LOCAL_SHARED_LIBRARIES := \ libandroid_runtime LOCAL_MODULE := libhello_jni include $(BUILD_SHARED_LIBRARY)
Android JNI使用方法相关推荐
- Android JNI使用方法,JNI机制详解
Android JNI使用方法,JNI机制详解 JNI的出现使得开发者既可以利用Java语言跨平台.类库丰 富.开发便捷等特点,又可以利用Native语言的高效. JNI是JVM实现中的一部分,因此N ...
- [转]Android JNI使用方法
本文转自:http://www.open-open.com/lib/view/open1324909652374.html 经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大 ...
- android — JNI注册方法说明
Jni中还可以采用RegisterNatives来注册jni的方法,注册以后的jni函数的命名可以不需要符合类似javah命令生成的函数的规则 RegisterNatives为JNIEnv的成员函数, ...
- Android Studio NDK环境配置及JNI使用方法
1.前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.N ...
- Android调用JNI本地方法跟踪目标代码
正如Android调用JNI本地方法经过有点改变章所说跟踪代码是可行的,但是跟踪某些代码会出现anr,点击取消,还是不好运,有提高办法吗?回答是有(gdb还没试过,本文只讨论ida). 下面是我使用 ...
- Android JNI开发读取asserts目录中文件的方法
Android Java层读取asserts目录中的文件: //获取asserts/test/目录下的所有文件名称 String test_path = "test"; int c ...
- android jni 调用 java_Android与JNI(二) ---- Java调用C++ 动态调用
目录: 1. 简介 2. JNI 组件的入口函数 3. 使用 registerNativeMethods 方法 4. 测试 5. JNI 帮助方法 6. 参考资料 1. 简介 Android与JNI( ...
- java jni 数据类型_【Android JNI】Native层解析Java复杂数据类型HashMap
前提 Java HashMap 是基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用null值和null键.HashMap是存放引用类型数据的容器,只能存放引用数据类型,不能存 ...
- Android JNI原理分析
引言:分析Android源码6.0的过程,一定离不开Java与C/C++代码直接的来回跳转,那么就很有必要掌握JNI,这是链接Java层和Native层的桥梁,本文涉及相关源码: frameworks ...
最新文章
- 沉痛悼念 pip search 一路走好
- 外文翻译 《How we decide》赛场上的四分卫
- 硬核NeruIPS 2018最佳论文,一个神经了的常微分方程
- 探索 .NET Core 依赖注入的 IServiceProvider
- 从十四五规划看 物联网(NB-IoT、Cat.1、5G)将何去何从?
- activiti 批量 mysql_Activiti6系列(3)- 快速体验
- 微信小程序setData的回调方法
- micropython c语言_micropython mp对象和c类型的转换
- 多行文本溢出显示省略号
- 将tomcat添加到系统服务
- 大数据-数据抽取(数据降维)算法
- VS2010 TFS 如何把一个项目添加到源代码管理中及其他管理
- 大数据开发离线计算框架知识点总结
- 手机群控系统OpenSTF
- FreeSWITCH会议指南
- win10pe命令打开计算机,win10系统制作PE启动盘的操作方法
- 打蚊子表情包_拍蚊子表情包 - 拍蚊子微信表情包 - 拍蚊子QQ表情包 - 发表情 fabiaoqing.com...
- 教你快速搭建个人网站
- 阿里云盘 Mac客户端(附mac/win版)v2.1.6中文内测版
- Isolation Forest算法原理详解