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.
Android NDK, Revision 8
(May 2012)
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 your
APP_ABI
definition in your Application.mk
file to build for MIPS platforms. For example, the following line instructs
ndk-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 calling
make-standalone-toolchain.sh
. See docs/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.
Important bug fixes:
- Fixed a typo in GAbi++ implementation where the result of
dynamic_cast<D>(b)
of base class object
b
to derived class D
is incorrectly adjusted in the opposite direction from the base class. (Issue 28721)
- Fixed an issue in which
make-standalone-toolchain.sh
fails to copy
libsupc++.*
.
Other bug fixes:
- Fixed
ndk-build.cmd
to ensure that ndk-build.cmd
works correctly even if the user has redefined the
SHELL
environment variable, which may be changed when installing a variety of development tools in Windows environments.