(1. What is JNIJNI? Since Java 1.1, the Java Native Interface (JNI) specification has become a part of the Java platform. It allows Java code to interact with code written in other languages. JNI was originally designed for local compiled languages, especially C and C , but it does not prevent you from using other languages, just call the ones that are supported. Using java to interact with locally compiled code usually loses platform portability. However, in some cases, it is affordable or even necessary to do so. For example, use some old libraries to interact with hardware and operating systems, perhaps to improve the function of programs. The JNI specification at least ensures that the local code can work in any Java virtual machine environment. 2. What is NDKAndroidNDK? It is also called "NDK" by Google because the word "native" is added in front of the SDK, that is, NativeDevelopmentKit. As we all know, Android programs run in the Dalvik virtual machine. NDK requires users to use native code languages like C/C to perform some programs. NDK includes tools and buildfiles required for generating native code libraries from C/C . Embed the common native library in the application package files (. apk files) that can be deployed on Android devices. A list of native system header files and libraries supporting all future Android platforms. This document includes the following annexes:)