Android NDK | |
Developer: | |
Released: | [1] |
Programming Language: | C and C++ |
Platform: | IA-32 (Windows only) or x86-64 (Windows,[2] macOS and Linux) |
Language: | English |
Genre: | SDK |
The Android Native Development Kit (NDK) provides a cross-compiling tool for compiling code written in C/C++ can be compiled to ARM, or x86 native code (or their 64-bit variants) for Android.[3] [4] The NDK uses the Clang compiler to compile C/C++. GCC was included until NDK r17, but removed in r18 in 2018.
Native libraries can be called from Java code running under the Android Runtime using System.loadLibrary
, part of the standard Android Java classes.[5] [6]
Command-line tools can be compiled with the NDK and installed using adb.[7]
Android uses Bionic as its C library, and the LLVM libc++ as its C++ Standard Library. The NDK also includes a variety of other APIs:[8] zlib compression, OpenGL ES or Vulkan graphics, OpenSL ES audio, and various Android-specific APIs for things like logging, access to cameras, or accelerating neural networks.
The NDK includes support for CMake and its own ndk-build
(based on GNU Make). Android Studio supports running either of these from Gradle. Other third-party tools allow integrating the NDK into Eclipse[9] and Visual Studio.[10]
For CPU profiling, the NDK also includes simpleperf[11] which is similar to the Linux perf tool, but with better support for Android and specifically for mixed Java/C++ stacks.