The Android NDK is a companion tool to the Android SDK that lets you buildperformance-critical portions of your apps in native code. It provides headers andlibraries that allow you to build activities, handle user input, use hardware sensors,access application resources, and more, when programming in C or C++. If you writenative code, your applications are still packaged into an .apk file and they still runinside of a virtual machine on the device. The fundamental Android application modeldoes not change.
Using native code does not result in an automatic performance increase, but always increases application complexity. If you have not run into any limitationsusing the Android framework APIs, you probably do not need the NDK. Read What is the NDK? for more information about whatthe NDK offers and whether it will be useful to you.
The NDK is designed for use only in conjunction with theAndroid SDK. If you have not already installed and setup the Android SDK, pleasedo so before downloading the NDK.
Platform | Package | Size | MD5 Checksum |
---|---|---|---|
Windows | android-ndk-r8-windows.zip | 109928336 bytes | 37b1a2576f28752fcc09e1b9c07e3f14 |
Mac OS X (intel) | android-ndk-r8-darwin-x86.tar.bz2 | 96650992 bytes | 81ce5de731f945692123b377afe0bad9 |
Linux 32/64-bit (x86) | android-ndk-r8-linux-x86.tar.bz2 | 88310791 bytes | 5c9afc9695ad67c61f82fbf896803c05 |
Revisions
The sections below provide information and notes about successive releases ofthe NDK, as denoted by revision number.
This release of the NDK includes support for MIPS ABI and a few additional fixes.
New features:- Added support for the MIPS ABI, which allows you to generate machine code that runs on compatible MIPS-based Android devices. Major features for MIPS include MIPS-specific toolchains, system headers, libraries and debugging support. For more details regarding MIPS support, see
docs/CPU-MIPS.html
in the NDK package.By default, code is generated for ARM-based devices. You can add
mips
to yourAPP_ABI
definition in yourApplication.mk
file to build for MIPS platforms. For example, the following line instructsndk-build
to build your code for three distinct ABIs:APP_ABI := armeabi armeabi-v7a mips
Unless you rely on architecture-specific assembly sources, such as ARM assembly code, you should not need to touch your
Android.mk
files to build MIPS machine code. - You can build a standalone MIPS toolchain using the
--arch=mips
option when callingmake-standalone-toolchain.sh
. Seedocs/STANDALONE-TOOLCHAIN.html
for more details.
Note: To ensure that your applications are availableto users only if their devices are capable of running them, Google Play filters applications basedon the instruction set information included in your application — no action is needed on your partto enable the filtering. Additionally, the Android system itself also checks your application atinstall time and allows the installation to continue only if the application provides a library thatis compiled for the device's CPU architecture.
- Fixed a typo in GAbi++ implementation where the result of
dynamic_cast<D>(b)
of base class objectb
to derived classD
is incorrectly adjusted in the opposite direction from the base class. (Issue 28721) - Fixed an issue in which
make-standalone-toolchain.sh
fails to copylibsupc++.*
.
- Fixed
ndk-build.cmd
to ensure thatndk-build.cmd
works correctly even if the user has redefined theSHELL
environment variable, which may be changed when installing a variety of development tools in Windows environments.