java jni demo_Android JNI:让你一眼知之的JNI DEMO
Android JNI:让你一眼知之的JNI DEMO
先按照步骤把 DEMO 跑成功。
image
1. 使用 AS 创建一个 Android 项目
注意☑️:
image
剩下的就 next finish 就可以了。
2. 创建 Java 类
image
3. 使用 javah 生成 .h 的头文件
在 Project 目录下,右键 java 目录,选择 Open in terminal
在 terminal 中输入:javah 类的全名
image
此时再去 HelloJni 类查看,发现 helloJni() 方法已经不报错了,说明可以找到该方法了
.h 文件,可以看成是 java 与 c/c++ (或其他语言) 沟通的桥梁
这里可以理解为 java 与 c/c++ 达成了一个约定,约定就写在 .h 文件中了
javah 生成的方法名命名规则:Java_完整类名_方法名
image
将生成的文件移动到 cpp 目录下
4. 在 main/cpp/ 下创建文件 First.c
image
5. 修改参数列表、书写业务逻辑
编写 First.c 文件
#include
#include
//通过Java_全类名_方法名,表示这个方法是实现 HelloJni 类中的 helloJni 方法
// 参数一:JNIEnv *env 每个本地方法的第一个参数都是指向 JNIEnv 结构的。
// 这个结构是用来调用 JNI 函数的
// 参数二:
// 如果该本地方法是 静态方法 : jclass 类型,表示一个类对象的引用(当前类对象)
// 如果该本地方法是 成员方法 : jobject 类型,表示被调用方法所属对象的引用(当前对象)
// 如果我们定义的 native 方法是一个有参方法,
// 那么此处的参数列表的第三,四..位参数就表示 native 方法的参数
JNIEXPORT jstring JNICALL Java_zyf_com_jnifirstproject_HelloJni_helloJni
(JNIEnv *env, jobject instance){
return (*env) ->NewStringUTF(env,"this is from native");
}
6. 在 CMakeLists.txt 中添加配置
在编写第五步时,可以明显看到如下提示:
image
翻译:First.c 文件还不是项目的一部分。请把它添加到适当的构建文件中( build.gradle, CMakeLists.txt orAndroid.mk )
这里选择在 CMakeLists.txt 中配置:
image
7.生成 so 库
AS-> Build -> Rebuild 后,在 build/cmake/debug/obj/ 文件夹下可以查看到对应四种架构的 .so 文件
image
8. 在 Java 类中加载 .so 文件
package zyf.com.jnifirstproject;
/**
* create by zyf on 2018/12/10 下午4:36
*/
public class HelloJni {
static {
System.loadLibrary("First.so");
}
public native String helloJni();
}
9. 可以使用了
刚学习一个知识,只要能跑通一个 DEMO,剩下的就可以自己添砖加瓦了。
java jni demo_Android JNI:让你一眼知之的JNI DEMO相关推荐
- java如何做全局缓存_传智播客JNI第七讲 – JNI中的全局引用/局部引用/弱全局引用、缓存jfieldID和jmethodID的两种方式...
讲解JNI中的全局引用/局部引用/弱全局引用.缓存jfieldID和jmethodID的两种方式,并编写两种缓存方式的示例代码. 1.从Java虚拟机创建的对象传到本地C/C++代码时会产生引用,根据 ...
- 设计师眼中的旅游LOGO设计——以小见大,一眼知世界
公告通知 近期,一个本土设计师的作品刷爆了朋友圈.他用了整整2年时间,把中国34个省市名字重新设计了一遍,惊艳全国.这些城市和省份旅游标志,以地名字体结合当地特色进行创作,源于传统,又不失现代风韵,寓 ...
- java excel 饼图,java 导入导出excle 和 生成柱状图饼状图的demo/excle数据如何转成饼状图...
在EXCEL中,如何把表格中的数据转换成饼状图? 在Excel中,把中的数据转换状图的操作步骤如下: 想转换的数据源,插入饼状图,Excel会自动根据选择的数据源生成饼状图.接下来,可以自定义饼状图的 ...
- java实现人民币数字转换中文大写的工具实例代码demo分享
原文:java实现人民币数字转换中文大写的工具实例代码demo分享 http://www.zuidaima.com/share/1816208858221568.htm 刚好在项目里面用到了数字转化为 ...
- Java jni 底层_JAVA语言语言调用底层语言的技术JNI解析
本文主要向大家介绍了JAVA语言语言调用底层语言的技术JNI解析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. java语言调用底层语言的技术JNI解析. Java代码执行步骤 JN ...
- jni java参数签名,什么是“方法签名”参数调用使用JNI的Java方法?
I want to call an Android Java method using JNI in Qt. There is a weird "Method Signature" ...
- 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件
JNI: Java Native Interface, 提供了java语言和其他语言(例如c和c++)进行相互调用的方式. 本文是用java调用c生成的so模式.其中,编译so文件过程如下: 1) ...
- 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解
学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...
- 15分钟了解Java性能优化以及一切你想知道的
From http://java-performance.com/?utm_campaign=Manong_Weekly_Issue_13&utm_medium=EDM&utm_sou ...
最新文章
- 深证信息等三方拟联合开展大数据研究
- 神经网络贷款风险评估(base on keras and python )
- Python字符型验证码识别
- 12行代码AC_Leecode 495. 提莫攻击——Leecode每日一题系列
- Php7 mongodb explain,【代码片-1】 php7 mongoDB 简单封装
- 镜像资源汇总 -- node依赖包下载缓慢或不成功的解决办法
- C#网络编程示例(note)
- [AU3]Backup Switch Config - cisco,huawei,h3c ---by onepc 153785587
- 22 副为程序员定制的对联,总有一副适合你...流泪
- 解决kaggle邮箱验证不能confirm的问题
- debian7 安装配置
- BMFONT制作位图字体并在CocosCreator中使用
- PreferenceActivity的使用
- 系统监控必备工具procexp
- cadvisor 容器安装部署
- excel制作折线图
- 小程序登陆-微信小程序登录-支付宝小程序登录-头条小程序登录
- leetcode_868_二进制间距
- python驱动级模拟按键 检测_py库: pyautogui (自动测试模块,模拟鼠标、键盘动作)...
- 五分钟学GIS | BIM与三维GIS的融合
热门文章
- c语言 获取文件名的相对路径,c – 如何获取对应于给予dlopen的相对路径的绝对库文件名?...
- 3.Spring Security 自定义用户认证
- python高频面试题_2019下半年金九银十Python高频面试题(第四弹)
- php面试题之一,几个PHP概念性的面试题
- 家长学校.net keti.html,家长学校教科研的工作制度
- 济宁市机器人科技乐园_【喜讯】山东省青少年科技创新大赛、机器人竞赛,济宁市信息学奥赛获奖名单新鲜出炉...
- java程序的装载与检查_浅谈Java类型装载、连接与初始化
- java取网页数据_浅析JAVA实现网页取内容
- oracle数据库导出灰色_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...
- 手机通讯录分组名称_基于Aandroid的手机操作系统(7)