Improved Android NDK r8

Description

This is distribution of improved Android NDK (Native Development Kit) from Google. This NDK is a fully working replacement of Google NDK and can be used everywhere where Google's intended to use. CrystaX NDK provide functionality identical to Google's NDK as well as many fixes and improvements not available in Google's one. This project were initially started by Dmitry Moskalchuk (CrystaX) to just add C++ features (such as C++ exceptions, RTTI and STL) to Google NDK but then many additional needs appeared and it were turned out that improving CrystaX NDK step-by-step is in fact the better way to force evolution of native Android development. Many open-source and commercial projects were used CrystaX NDK for porting and development for Android with minimal effort.

See below key features of CrystaX NDK:

  1. Wide characters.
    Google's NDK doesn't support wide chars properly - neither in C or C++. Using CrystaX NDK you get full standard compliant wide characters support. You can easily port existing code which use wide characters/strings/streams or write new one.

  2. The most recent toolchains
    CrystaX NDK includes the most recent versions of GCC and Clang compilers as well as stables. This allows developers use new languages abilities (such as new C++ 11 features). All compilers are built with high- and low-level optimizations which enables generation of the most efficient code for target hardware.

  3. C++11 support
    Since CrystaX NDK include the most recent versions of GCC and Clang, it support many new C++ 11 features listed on C++0x/C++11 Support in GCC and C++98 and C++11 Support in Clang.
    Also, CrystaX NDK offer fully working C++ 11 classes std::thread, std::mutex, std::chrono etc. These classes are not available in Google NDK because of lack of functionality in Android Bionic libc. We have investigated this problem and fixed it so in CrystaX NDK you can just use them and forget about ifdefs.

  4. Objective-C support
    The only languages Google NDK supports are C and C++. CrystaX NDK adds support of Objective-C in addition to C and C++. Only core language supported as of now; work on Cocoa-like libraries is in progress. To start using Objective-C in your project, just add source files with extension .m (Objective-C) or .mm (Objective-C++) and specify them in LOCAL_SRC_FILES in Android.mk.

  5. To be continued...
    If you don't see some great feature here, don't hesitate to contact us and ask for it. You can also use our issue/bug tracker to report bugs or feature requests. And, of course, contributes are welcome!

Download

How to build

You can also build distribution from sources if you somewhy don't want use prebuilt versions. To do that, follow instructions below.

Setting up build environment:

Follow instructions from AOSP site except Java part. Then install repo tool as described here. Ensure you have repo in your PATH.
WARNING!!! Build of Windows version of CrystaX NDK is only supported on Linux machine (cross-build used). Build on Windows host is not tested and not supported.

Instructions

  • Download build script and run it:
    wget -O - http://www.crystax.net/download/ndk-crystax-r8-build.sh | /bin/sh
    It will take long time, up to several hours. When script will be finished, it'll print directory containing package with NDK release.
  • You're done! Use this package as replacement of Google's NDK!