Android Studio运行NDK程序,简单的JNI实例
来源:互联网 发布:俄罗斯黑客 知乎 编辑:程序博客网 时间:2024/06/06 23:38
一、JNI概述
JNI 是Java Native Interface的缩写,中文翻译为“Java本地调用”,JNI 是本地编程接口。它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行互操作。就是说,JNI是一种技术,通过这种技术可以做到两点:
1.Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。
2.Native程序中的函数可以调用Java层的函数,也就是说C/C++程序可以调用Java函数。
二、JNI应用
2、在工程主文件Activity中写入如下代码调运JNI的东西显示在UI上。
7、在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫jnitest.c。然后编辑代码如下:
9、接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:
好了,到此AS下NDK JNI开发的代码编写和设置就OK了,接下来就是编译工程运行就可以了。运行效果如下图:
在gradle.properties加入如下配置:
android.useDeprecatedNdk=true
JNI 是Java Native Interface的缩写,中文翻译为“Java本地调用”,JNI 是本地编程接口。它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行互操作。就是说,JNI是一种技术,通过这种技术可以做到两点:
1.Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。
2.Native程序中的函数可以调用Java层的函数,也就是说C/C++程序可以调用Java函数。
二、JNI应用
1、在AS中新建一个Project,然后再新建一个class为NdkJniUtils,在内部声明native方法。
2、在工程主文件Activity中写入如下代码调运JNI的东西显示在UI上。
其内容为:
7、在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫jnitest.c。然后编辑代码如下:
9、接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:
好了,到此AS下NDK JNI开发的代码编写和设置就OK了,接下来就是编译工程运行就可以了。运行效果如下图:
三、报错处理
解决方法:在gradle.properties加入如下配置:
android.useDeprecatedNdk=true
2、unsatisfiedlinkError错误
解决方法:
1.unsatisfiedlinkError:dll名,那说明你没有把dll放到合适的位置,一般就和要调用原生函数的类放在一起,当然前提是你成功的生成dll了。
2.unsatisfiedlinkError:方法名,这个时候你其实dll已经成功生成了,而且位置也正确,它的意思就是你没有定义那个函数,你可能会说,我明明定义了,其实当你发现问题所在,你只能自虐了,肯定是你在C文件中定义函数时有些字母大小写错了,因为其他地方是自动生成的,不会出错。(我犯这个问题是因为引用的时候包名写错了!)
阅读全文
0 0
- Android Studio运行NDK程序,简单的JNI实例
- Android Studio运行NDK程序,简单的JNI实例
- android studio JNI/NDK的简单使用
- android studio运行NDK实例
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
- NDK-JNI实战(一) 在Android Studio运行第一个NDK程序
- Android Studio NDK环境配置与JNI简单的例子
- Android Studio通过JNI调用NDK程序
- Android Studio 配置NDK,运行第一个hello-jni安卓程序详细步骤
- android studio + NDK + JNI
- 用Android Studio 运行ndk 程序
- 在Android Studio运行NDK程序
- 设计模式(九)外观模式Facade(结构型)
- 动态规划之数塔问题
- BUG记录01:onInitializeAccessibilityNodeInfo(RecyclerView.java:6290)
- Java事件类及监听器接口
- 06-指令ng-model双向绑定
- Android Studio运行NDK程序,简单的JNI实例
- Tomcat服务器可以启动但是javaweb项目无法启动可能存在的原因
- nginx+uwsgi
- 修改和固定局域网的IP地址
- 三步教你做酷炫的“倒计时”原型效果
- SentOS 7防火墙配置与端口增删改查的命令
- Code blocks调试教程
- 牛客网---2016---小米风口的猪-中国牛市
- 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案