Android JNI入门编辑之Hello world
2016-12-17 23:11
183 查看
Android JNI入门编辑之Hello world
环境搭建 开发环境为Android studio1.5,window10操作系统,在开发中发现1.5版本在编译生成NDK的命令行与2.0以上版本有点区别,在下面会具体说明,至于具体原因,现在还不清楚(欢迎知道的朋友留言告诉),下面具体进行第一个android JNI调用C++代码的程序,我会以图片的形式具体来显示,方便不懂的朋友快速了解。创建Android调用C++程序 首先用Android studio创建一个新的Android Demo,这里我新建一个名为AndroidJni的项目,如图所示:
创建一个Java类,名字为JniTest,在JniTest类中,声明会使用到的一些native接口方法,以及自定义so:
JniTest中方法之所以显示错误,是还没有在JNI头文件中生成对应的函数,这里可以先不用管。 创建JNI文件,生成JNI层C/C++头文件
对于生成的com_tanggua_androidjni_JniTest.h,需要将其一定到JNI文件中,并且生成对应的C或者C++ 的.c或者.cpp文件,生成.h文件需要在Triminal中切换到Android项目的java目录下,并且使用javah生成.h文件。在具体实现中,我发现Android 1.5版本生成.h文件需要使用 javah -classspath . -jni 包名+类名的形式才可以,在Android studio2.0以上使用javah -d ../jni 包名+类名形式,而且这个命令在1.5中不能生成,具体原因还没有搞懂。好了现在生成了JNI层文件。
4000
完成之后需要在gradle.properties目录下加上 android.useDeprecatedNdk = true如下图
然后在build.gradle中添加ndk所包含的库,名字必须与创建的一样,最后在Sync Now或者build一下项目,就会发现前面的错误完全消失,项目创建成功,如图:
下面我们可以具体在JNI层对native方法进行操作了:
然后返回Java层,在MainActivity中对native方法进行调用,并获取JNI层数据,在这个时候我们出现了一个错误,如图:
根据所查到的资料显示这个错误是因为NDK的原因,需要在JNI中创建一个空的文件,在这里创建的是empty.c文件,然后编译,成功:
好了,第一个Android Jni到此编译完成,后续我继续更新Android Jni使用,以及各种类型的转换,调用,Java与C/C++调用。 - - 代码下载地址:
相关文章推荐
- Android Studio JNI 基础入门--Hello World
- Android JNI开发入门篇
- Android JNI开发入门
- Android JNI入门第四篇——Android.mk文件分析
- Android JNI入门第五篇——基本数据类型使用
- Android JNI入门第五篇——基本数据类型使用
- Android入门逆引手册 - 08 可编辑文本框(EditText)的使用
- Android JNI开发入门之二
- Android JNI入门第三篇——jni头文件分析
- Android JNI入门第三篇——jni头文件分析
- C#/mono开发Android应用程序入门(二)-第一个应用程序(Hello World)
- Android JNI开发入门篇
- android入门(1)安装及hello world
- Android入门-Hello World
- Android JNI入门第三篇——jni头文件分析
- Android JNI开发入门篇
- android JNI 的Hello World
- Android JNI入门第一篇——HelloWord
- Android JNI入门第四篇——Android.mk文件分析
- Android JNI开发入门之一