1.明确为何要学习JNI
- JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。
- Java开发要用到JDK,Android开发要用到SDK,那我们在Android中要进行native开发,也要用到它对应的工具包,即NDK。通俗的来讲,NDK就是帮助我们可以在Android应用中使用C/C++来完成特定功能的一套工具。 NDK的作用有很多,我们简单的列举两个,比如:
1.首先NDK可以帮助开发者“快速”开发C(或C++)的动态库。
2.其次,NDK集成了“交叉编译器”。使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率.
arm结构 :主要在移动手持、嵌入式设备上。我们的手机几乎都是使用的这种CUP架构。
x86结构 : 主要在台式机、笔记本上使用。如Intel和AMD的CPU 。
MIPS架构:多用在网关、猫、机顶盒等设备
3.as配置ndk:file->Project Structure->SDK Location->Android NdK Location写入下载解压后的ndk路径
4.jni开发流程
- 在MainActivity类中声明函数jniSay(native关键字):
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super<