【移动应用开发技术】详解Android JNI的基本使用(CMake)_第1页
【移动应用开发技术】详解Android JNI的基本使用(CMake)_第2页
【移动应用开发技术】详解Android JNI的基本使用(CMake)_第3页
【移动应用开发技术】详解Android JNI的基本使用(CMake)_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】详解AndroidJNI的基本使用(CMake)

简介

什么是JNI

JNI的全称是JavaNativeInterface:Java本地开发接口,它提供了若干的API实现了Java和其他语言的通信(主要是C和C++),目的就是Java可以调用C或C++开发的函数,C或C++也能调用Java的方法。这样有很多有点,其一就是效率,C/C++是本地语言,比java更高效;其二就是可以复用已经存在的C/C++代码;其三是Java反编译比C语言容易,一般加密算法都是用C语言编写,不容易被反编译。什么是NDK和CMake

NDK全称是NativeDevelopmentKit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和Java应用一起打包成apk。NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。

通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(makeinstall)、测试安装的程序是否能正确执行(maketest,或者ctest)、生成当前平台的安装包(makepackage)、生成源码包(makepackage_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。使用流程1、在java文件中创建本地方法

2、build项目后自动生成“.h”文件

3、创建.cpp文件,实现.h文件中的方法

4、配置Cmake文件,生成“.so”文件笔者项目目录如下:

测试实例1、调用native方法nativeCalculate,传入参数2。

1、获取java对象number,初始值为0。

2、调用java方法javajavaCalculate,传入number值,获得返回值10。

3、将返回值加上参数2,返回,获得12。最终效果如下:

创建本地方法自动生成“.h文件”首先makeProject,然后进入到app\build\intermediates\classes\debug目录下。

在终端输入命令javahcom.example.xujiajia_sx.jnitest.JNITest(即带有native方法的类)

效果如下:

自动生成的“.h”文件如下,可以根据自己要求对其重命名或者增减内容。创建cpp文件实现native方法笔者cpp文件如下:主要逻辑是获取到java中number的值,然后调用javaCalculate()方法,接着再加上这个native方法的参数num。设置Cmake文件,生成”.so”文件首先,在build.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论