博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JNI 与 NDK 的关系 以及实现
阅读量:5938 次
发布时间:2019-06-19

本文共 999 字,大约阅读时间需要 3 分钟。

下图为JNI 与 NDk关系图:

 

现在我们来说说如何在AS里面使用NDK 。从前我们需要命令行 javah jni 和 ndk build ,现在我们用CMAKE 。

不管是哪种方式,流程是一样的:

      1.首先我们先 写一个JAVA类(调用so用的,System.load(""),必须build生成.class),

     2.然后利用它的.class文件生成一个.cpp文件

     3.根据cpp生成一个.so文件

     4.完美运行

 

只能说这两种方式的在第二步和第三步的 方式不一样,以及配置文件不一样

 

 

现在我们进入正题

1.CMAKE 

  首先在创建工程的时候,勾上 Include c++ support 。项目建成后 module 下就多了 CMakeLists.txt ,以及build.grandle 。包括MainActivity ,cpp 文件都会写,后面照着写就好。

 

 

 

   

 以上都是建立项目后自动有的。

      小注:

  1.若自定义native方法,直接 选中方法名  再alt+enter ,即可

  2.ctrl 点击方法,可以在java 与 c文件的方法互相跳转 (使用很方便)

  3.写c ,还有代码提示

  4.如果我们不在c源代码文件中输出日志到logcat,那么我们是不需要依赖log库的,也就是说find_library、target_link_libraries不是必须的。 

  

如果我们开发半途希望加入jni ,那么我们的步骤是:

  1.新建CMakeLists.txt

  2.模块右键 选择 ,然后build.gradle 就自动变化配置了,但是还是有需要自己配置的

 

   3.cpp文件还是要自己新建的,新建后就可以在java文件中System.Load("") ,且在java 中写好方法 ,选中+alt+enter ,保证CPP 中生成对应的方法

   

 

老旧实现:

  是通过命令行实现  

    1.通过在jdk/bin  下找到javah ->  将class文件 转化成 cpp 

    2.通过sdk/ndk/ndk-build -> 将cpp 转化成so

 

 而在AS 中 ,可以直接配置命令行,右键对应的文件 就可省去代码。

 

转载于:https://www.cnblogs.com/nuomiMA/p/9541849.html

你可能感兴趣的文章
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
让我们荡起双桨,Android 小船波浪动画
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
tomcat 8.0虚拟机配置文档
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
XILINX_zynq_详解(6)
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>
soapUI的简单使用(webservice接口功能测试)
查看>>
框架 Hibernate
查看>>
python-while循环
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
(原創) 如何建立一个thread? (OS) (Linux) (C/C++) (C)
查看>>
<气场>读书笔记
查看>>