ndk=true page.template=sdk page.title=NDK Downloads @jd:body

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.

Extraction

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

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:
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 {@code #pragma GCC optimize ("O0")}, but had a different level of optimization specified on the command line. The {@code 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 {@code llvm.cttz.v2i64()}, an instruction with no counterpart in the ARM instruction set.
Other bug fixes:
  • Made the following header and library fixes:
    • Fixed {@code PROPERTY_*} in {@code media/NdkMediaDrm.h}.
    • Fixed {@code sys/ucontext.h} for {@code mips64}.
    • Dropped the Clang version check for {@code __builtin_isnan} and {@code __builtin_isinf}.
    • Added {@code android-21/arch-mips/usr/include/asm/reg.h} and {@code 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 {@code mips} and {@code mips64} to create a writable {@code .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 {@code compiler-rt} issues that were causing crashes when Clang compiled for {@code mips64}. For more information, see LLVM Issue 20098.
  • Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue 81440)
  • Fixed {@code stlport collate::compare} to return {@code -1} and {@code 1}. Previously, it had returned arbitrary signed numbers.
  • Fixed {@code 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 {@code libc++ __wrap_iter} for GCC. For more information, see LLVM Issue 22355.
  • Fixed {@code .asm} support for ABI {@code x86_64}.
  • Implemented a workaround for the GCC 4.8 {@code stlport} issue. (Issue 127773)
  • Removed the trailing directory separator {@code \\} from the project path in Windows. (Issue 160584)
  • Fixed a {@code no rule to make target} error that occurred when compiling a single {@code .c} file by executing the {@code ndk-build.cmd} command from {@code gradle}. (Issue 66937)
  • Added the {@code libatomic.a} and {@code libgomp.a} libraries that had been missing from the following host toolchains:
    • {@code aarch64-linux-android-4.9}
    • {@code mips64el-linux-android-4.9}
    • {@code mipsel-linux-android-4.9}
    • {@code x86_64-4.9}
Other changes:
  • Added {@code ld.gold} for {@code aarch64}. The default linker remains {@code ld.bfd}. To explicitly enable {@code ld.gold}, add {@code -fuse-ld=gold} to the {@code LOCAL_LDFLAGS} or {@code APP_LDFLAGS} variable.
  • Built the MIPS and MIPS64 toolchains with {@code binutils-2.25}, which provides improved R6 support.
  • Made {@code -fstandalone-debug} (full debug info) a default option for Clang.
  • Replaced {@code -fstack-protector} with {@code -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 {@code --package} command-line switch to {@code ndk-gdb} to allow the build system to override the package name. (Issue 56189)
  • Deprecated {@code -mno-ldc1-stc1} for MIPS. This option may not work with the new {@code -fpxx} and {@code -mno-odd-spreg} options, or with the FPXX ABI.
  • Added MIPS MSA and R6 detection to {@code cpu-features}.