• JNI和NDK编程


    Java JNI的本意是Java Native Interface(Java本地接口),它是为了方便Java调用C、C++等本地代码所封装的一层接口。通过Java JNI,用户可以调用C、C++所编写的本地代码。

    NDK是Android所提供的一个工具集合,通过NDK可以在Android中更加方便地通过JNI来访问本地代码,比如C或C++。NDK还提供了交叉编译器,开发人员只需要简单的修改mk文件就可以生成特定CPU平台的动态库。

    使用NDK的好处:

    1.提高代码的安全性。由于so库反编译比较困难,因此NDK提高了Android程序的安全性。

    2.可以很方便的使用目前已有的C/C++开源库

    3.便于平台间的移植。通过C/C++实现的动态库可以很方便的在其他平台上使用。

    4.提高程序在某些特定情形下的执行效率,但是并不能明显提升Android程序的性能。

     JNI和NDK开发所用到的动态库的格式是以.so为后缀的文件

    一、JNI 的开发流程

    1.在Java中声明native方法

    2.编译Java源文件得到class文件,然后通过javah命令导出JNI的头文件

    3.实现JNI方法

    4.编译so库并在Java中调用

    二、NDK的开发流程(NDK的开发是基于JNI的)

    1.下载并配置NDK

    2.创建一个Android的项目,并声明所需的native方法

    3.实现Android项目中所声明的native方法

    4.切换到jni目录的父目录,然后通过ndk-build命令编译产生so库

    四、JNI的数据类型和类型签名

                                            JNI类型映射

                                     JNI数组存取函数

                                         域和方法的函数

                                          确定域和方法的函数

    五、JNI调用Java方法的流程

    1.通过类名找到类

    2.根据方法名找到方法的id

    3.调用这个方法(如果是调用Java中的非静态方法,需要构造出类的对象后才能调用)

  • 相关阅读:
    一本通1486:【例题1】黑暗城堡
    洛谷P2508 [HAOI2008]圆上的整点
    codevs 3304 水果姐逛水果街Ⅰ
    洛谷P1283 平板涂色 &&一本通1445:平板涂色
    bzoj4897: [Thu Summer Camp2016]成绩单
    题解 P2719 【搞笑世界杯】
    VSCode 下go环境配置【终结版】
    Liunx(Centos 7)下一步一步部署 net core 项目
    服务器返回503(IIS Service Unavailable HTTP Error 503. The service is unavailable.)+IIS常见优化设置策略
    每日一句 Linux, 持续精进
  • 原文地址:https://www.cnblogs.com/lushiju/p/5233833.html
Copyright © 2020-2023  润新知