Android JNI开发一: JNI基础知识

JNI基础知识

Android系统底层的框架大多采用的是C或者C++语言实现的,但是Android上层的框架是采用Java实现的,所以我们平常进行Android也是采用Java语言开发。虽然Android底层采用C或者C++实现,但是我们在进行Android开发的时候,却不能直接调用C或者C++,而是需要采用JNI来调用C或者C++,下面小编就为大家介绍什么是JNI?以及怎么使用JNI来实现调用C或者C++语言。

一、JNI 介绍

1.1 简介

JNI 即 Java Native Interface,通俗的可以理解为Java本地接口。它的作用就是能实现Java与本地其他语言,比如C或者C++进行交互。也就是说可以Java可以通过JNI调用C、C++,同时C、C++也能通过JNI调用Java。

JNI是Java语言中的特性,JNI是属于Java的,与Android其实是没有直接关系的。

1.2 实现步骤

  1. Java中声明Native方法(即需要调用的本地方法)
  2. 编译上述 Java源文件javac(得到 .class文件)
  3. 通过 javah 命令导出JNI的头文件(.h文件)
  4. 使用 Java需要交互的本地代码 实现在 Java中声明的Native方法
  5. 编译.so库文件
  6. 通过Java命令执行 Java程序,最终实现Java调用本地代码

1.3 JNI的使用场景

  • 考虑代码安全
    在安卓开发中,Java语言开发的代码往往很容易被反编译,但是C语言写的代码编译之后就成了二进制文件,所以比较难被反编译。在一些比较机密的业务可以采用C语言来编写,然后采用Java通过JNI来调C语言。

  • 考虑执行效率

    一些比较复杂的算法采用java语言实现,可能执行效率比较低,但是如果采用C语言实现,效率可能会更高,因为C语言是更接近底层的语言。所以为了提高执行效率,比如一些视频的处理算法,往往是采用C语言去实现的。在一些比较复杂的算法可以采用C语言来编写,然后采用Java通过JNI来调C语言。

二、NDK介绍

2.1 简介

NDK 即 Native Development Kit ,可以理解为NDK是安卓的一个开发工具包。它的作用是可以快速开发C、C++的动态库,并且自动将SO库和应用一起打包成APK。

NDK是属于安卓的开发工具包,与Java没有直接的关系。

2.2 JNI与NDK的关系

  1. JNI是Java中的接口,用于Java与本地语言的交互;
  2. NDK是安卓的开发工具包,用于快速开发C、C++的动态库,并和SO文件一起打包成APK;
  3. JNI是实现的目的,而NDK是安卓中实现JNI的手段。在AndroidStudio中,是通过NDK实现JNI功能的。
微信扫码订阅
UP更新不错过~
关注
  • 3
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙火山

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值