Show navigation Hide navigation

NDK Downloads

Platform Package Size (Bytes) MD5 Checksum
Windows 32-bit android-ndk-r10e-windows-x86.exe 396563176 1a82445baaf62aec3a46386ab1e5772c
Windows 64-bit android-ndk-r10e-windows-x86_64.exe 419616132 8412bb4991a95e08fda50b5a44d95df7
Mac OS X 64-bit android-ndk-r10e-darwin-x86_64.bin 388937326 2cb8893a5701603519d38a7e04c50e81
Linux 32-bit (x86) android-ndk-r10e-linux-x86.bin 394281908 c3edd3273029da1cbd2f62c48249e978
Linux 64-bit (x86) android-ndk-r10e-linux-x86_64.bin 401522849 19af543b068bdb7f27787c2bc69aba7f

Select, from the table below, the NDK package for your development platform. For information about the changes in the newest version of the NDK, see Release Notes. For information about earlier revisions, see NDK Revision History.

Downloading

Extraction

The NDK package is a self-extracting binary. To unpack it, follow the procedure for your development platform:

  • On Linux and Mac OS X (Darwin):
      1. Download the appropriate package from this page.
      2. Open a terminal window.
      3. Go to the directory to which you downloaded the package.
      4. Run chmod a+x on the downloaded package.
      5. Execute the package. For example:
        ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
        ndk$ ./android-ndk-r10c-darwin-x86_64.bin
                  
      6. The folder containing the NDK extracts itself.

        You can also use a program like 7z to extract the package.

  • On Windows:
      1. Download the appropriate package from this page.
      2. Navigate to the folder to which you downloaded the package.
      3. Double-click the downloaded file. The folder containing the NDK extracts itself.
When uncompressed, the NDK files are contained in a directory called android-ndk-<version>. You can rename the NDK directory if necessary and you can move it to any location on your computer. This documentation refers to the NDK directory as <ndk>.

You are now ready to start working with the NDK.

Release Notes

Android NDK, Revision 10e (May 2015)

Important changes:
  • Integrated the workaround for Cortex-A53 Erratum 843419 into the aarch64-linux-android-4.9 linker. For more information on this workaround, see Workaround for cortex-a53 erratum 843419.
  • Added Clang 3.6; NDK_TOOLCHAIN_VERSION=clang now picks that version of Clang by default.
  • Removed Clang 3.4.
  • Removed GCC 4.6.
  • Implemented multithreading support in ld.gold for all architectures. It can now link with or without support for multithreading; the default is to do it without.
    • To compile with multithreading, use the --threads option.
    • To compile without multithreading, use the --no-threads option.
  • Upgraded GDB/gdbserver to 7.7 for all architectures.
  • Removed the NDK package for 32-bit Darwin.
Important bug fixes:
  • Fixed a crash that occurred when there were OpenMP loops outside of the main thread.
  • Fixed a GCC 4.9 internal compiler error (ICE) that occured when the user declared #pragma GCC optimize ("O0"), but had a different level of optimization specified on the command line. The pragma takes precedence.
  • Fixed an error that used to produce a crash with the following error message:
    in add_stores, at var-tracking.c:6000
    
  • Implemented a workaround for a Clang 3.5 issue in which LLVM auto-vectorization generates llvm.cttz.v2i64(), an instruction with no counterpart in the ARM instruction set.
Other bug fixes:
  • Made the following header and library fixes:
    • Fixed PROPERTY_* in media/NdkMediaDrm.h.
    • Fixed sys/ucontext.h for mips64.
    • Dropped the Clang version check for __builtin_isnan and __builtin_isinf.
    • Added android-21/arch-mips/usr/include/asm/reg.h and android-21/arch-mips64/usr/include/asm/reg.h.
  • Fixed a spurious array-bounds warning that GCC 4.9 produced for x86, and reenabled the array bounds warning that GCC 4.9 had produced for ARM. The warning for ARM had previously been unconditionally disabled.
  • Fixed Clang 3.5 for mips and mips64 to create a writable .gcc_except_table section, thus matching GCC behavior. This change allows you to avoid the following linker warning:
    .../ld: warning: creating a DT_TEXTREL in a shared object
    
  • Backported a fix for compiler-rt issues that were causing crashes when Clang compiled for mips64. For more information, see LLVM Issue 20098.
  • Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue 81440)
  • Fixed stlport collate::compare to return -1 and 1. Previously, it had returned arbitrary signed numbers.
  • Fixed ndk-gdb for 64-bit ABIs. (Issue 118300)
  • Fixed the crash that the HelloComputeNDK sample for RenderScript was producing on Android 4.4 (Android API level 19). For more information, see this page.
  • Fixed libc++ __wrap_iter for GCC. For more information, see LLVM Issue 22355.
  • Fixed .asm support for ABI x86_64.
  • Implemented a workaround for the GCC 4.8 stlport issue. (Issue 127773)
  • Removed the trailing directory separator \\ from the project path in Windows. (Issue 160584)
  • Fixed a no rule to make target error that occurred when compiling a single .c file by executing the ndk-build.cmd command from gradle. (Issue 66937)
  • Added the libatomic.a and libgomp.a libraries that had been missing from the following host toolchains:
    • aarch64-linux-android-4.9
    • mips64el-linux-android-4.9
    • mipsel-linux-android-4.9
    • x86_64-4.9
Other changes:
  • Added ld.gold for aarch64. The default linker remains ld.bfd. To explicitly enable ld.gold, add -fuse-ld=gold to the LOCAL_LDFLAGS or APP_LDFLAGS variable.
  • Built the MIPS and MIPS64 toolchains with binutils-2.25, which provides improved R6 support.
  • Made -fstandalone-debug (full debug info) a default option for Clang.
  • Replaced -fstack-protector with -fstack-protector-strong for the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and Clang 3.6.
  • Added the --package command-line switch to ndk-gdb to allow the build system to override the package name. (Issue 56189)
  • Deprecated -mno-ldc1-stc1 for MIPS. This option may not work with the new -fpxx and -mno-odd-spreg options, or with the FPXX ABI.
  • Added MIPS MSA and R6 detection to cpu-features.