zoukankan      html  css  js  c++  java
  • Android studio JNI技术实现与本地C++链接

    也是自己前段时间在写一个Android人脸识别APP,其中为了提高速度,使用本地端的C++代码实现的人脸检测+识别

    我们都知道Android支持Java语言交互,但是不支持C和C++,但是有时候为了方便和需求,需要用到Java应用层调用底层的C和C++代码,这时候就需要用到Java的JNI技术,叫做Java本地接口技术,实现Java与C或C++进行调用

    下面我想说一下JNI技术的整体步骤和原理:

    1、新建一个Android studio工程(注意把这个勾选上,不然后面还需要配置,勾选上就无须自己配置Cmake,Gradle啦)

    2、Android指定位置新建一个类,如JavaJNI.java类(一般位置为、src/main/java/"你的包名"/),在该类里面声明一个方法,该方法有本地端实现,即如 public native void open();

    3、写好之后本地native方法之后,配置Javah, 操作步骤:File-Tools-External Tools-"点击加号"    name随便起一个,方便统一叫javah, 下面的Description可以和上面一致;

    Program: $JDKPath$injavah.exe

    Auguments: -classpath . -jni -o $ModuleFileDir$/src/main/jni/$Prompt$ $FileClass$

    Working directory: $ModuleFileDir$srcmainjava

    以上为配置Javah过程,到这就配置好了,注意上面几个配置你可以理解为固定配置,其实是一些路径定义,可以不用管的,

    4、鼠标选中刚刚新建的含有本地实现方法的类,右击选择External Tools的Javah, 随机在弹出的窗口输入名字(这个名字就是马上生成的C或C++头文件的名字,文件会保存在/src/main/jni/下面),这样我们的C或C++头文件就生成好了,在JNI文件下,

    5、将生成的.h头文件 放到、src/main/cpp文件中

    6、在cpp文件下在新建一个对应的.cpp文件,开始编写需要调用的本地函数方法(具体做法把刚生成.h文件中的方法名复制过来,“;”改为方法体“{}”,然后在方法体中用C++实现你需要的功能)

    7、在MainActivity.java测试类中调用JavaJNI.java类中本地声明的方法

    8、编译即可成功调用实现你写的C++方法

  • 相关阅读:
    C#创建资源文件
    C#基础-获得当前程序的 空间名.类名.方法名
    C# 事务
    sql作业
    获取IP和mac地址
    winform文本框不能粘贴、复制和屏蔽右键
    Linux的iptables常用配置范例(1)
    自动化运维工具Ansible详细部署
    rsync+inotify实现数据的实时备份
    leetCode(26):Unique Binary Search Trees
  • 原文地址:https://www.cnblogs.com/rhp2lmy1314/p/11028224.html
Copyright © 2011-2022 走看看