请介绍一下NDK

什么是NDK库?

 

JNI介绍

定义:Java Native Interface,即 Java本地接口

作用: 使得Java 与 本地其他类型语言(如C、C++)交互(即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码

特别注意:

1.JNI是 Java 调用 Native 语言的一种特性

2.JNI 是属于 Java 的,与 Android 无直接关系

 

NDK介绍

定义:Native Development Kit,是 Android的一个工具开发包 。NDK是属于 Android 的,与Java并无直接关系

作用:快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK (即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互

应用场景:在Android的场景下 使用JNI (即 Android开发的功能需要本地代码(C/C++)实现

NDK特点

1.性能方面:

(1)运行效率高:在开发要求高性能的需求中,采用C/C++更加有效率(如使用本地代码(C/C++)执行算法,能大大提高算大的执行效率)

(2)代码安全性高:java是半解释型语言,容易被反编译后得到源代码,而本地有些代码类型(如C/C++)则不会,能提高系统的安全性

2.功能方面:

功能扩展性好:可方便地使用其他开发语言的开源库,除了java的开源库,还可以使用开发语言(C/C++)的开源库

3.使用方面:

易于代码复用和移植:用本地代码(如C/C++)开发的代码不仅可在Android中使用,还可嵌入其他类型平台上使用

请介绍一下NDK_第1张图片

额外注意

  1. 提供了吧 .so和 .apk打包的工具(而JNI开发没有,只是把.so文件放到文件系统的特定位置)
  2. NDK提供的库有限,仅用于处理算法效率和敏感的问题
  3. 提供了交叉编译器,用于生成特定的CPU平台动态库

请介绍一下NDK_第2张图片

NDK与JNI关系

 

JNI

NDK

定义

Java中的接口

Android中的工具开发包

作用

用于java与本地语言(如C/

C++)交互

快速开发C/C++的动态库,并自动将so和应用一起打包成APK

之间的关系:JNI是实现的目的,NDK是在Android中实现JNI的手段(即在Android的开发环境中(Android Studio),通过NDK从而实现JNI的功能

 

请介绍一下NDK_第3张图片

你可能感兴趣的:(Android,NDK,jni,Binder,AIDL等)