JNI 与 NDK 的关系 以及实现

下图为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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值