This project has been on hold since 2016
All the data on this site is still available (and will stay available) but not up-to-date anymore
You might like to check Dmitry Moskalchuk's portfolio for his other projects
WARNING!!! You are looking for outdated CrystaX NDK release.
New CrystaX NDK 10.3.2 is available, offering numerous great features and improvements; perhaps you should check it out instead of using old one.


Here are customized distribution of Android NDK r3 which I have rebuilt from official sources. Support of C++ exceptions, RTTI and Standard C++ Library added. There was no many modifications, you can see them in my patch

Update: Application built using this version could be potentially broken when using on the next Android versions. Nevertheless, they should work fine on current versions (up to Android 2.1). As soon as I'll fix that, updated distribution will be released. For details about potential problem with future versions, see my discussion with David Turner (system architect of Android) here

Update 2: The problem was fixed in latest distribution (android-ndk-r3-crystax-2) so no more such potential problems. It is not more in 'experimental' state and application binaries built using my custom Android NDK distribution will not differ by ABI (Application Binary Interface) requirement from that built by official distribution. See detailed explanation of problem and how it was solved in my message to Android NDK group.

Update 3: New bug-fix release android-ndk-r3-crystax-3 ready! List of problems fixed:


The content of the CrystaX NDK is covered by various open-source licenses. See the copyright disclaimers in each respective file for details.

Note that the CrystaX NDK release packages also contain prebuilt binaries for the compiler, linker, archiver, etc. The source codes for the toolchains are available at GitHub (you can use the build script to download it automatically).

The prebuilt GCC and companion binaries (GDB, binutils etc) are covered by either the GNU General Public License (GPL) or the GNU Lesser General Public License (LGPL). For details, see the files COPYING and COPYING.LIB under $NDK/toolchains/$tc/prebuilt/$system.

The prebuilt LLVM/Clang toolchains are covered by the LLVM "BSD" license.

Basically, licensing rules are the same as for Google's Android NDK - i.e., both commercial and non-commercial usage allowed. The only additions are regarding CrystaX parts, which are covered by a permissive BSD 2-clause license.


File Size SHA256 131.713 MB a3f4b6227e9d9fe...134c4da4aa1a96
android-ndk-r3-darwin-x86-crystax-3.tar.bz2 109.896 MB 27ac9e1aaead6b3...a45b65aa155d43
android-ndk-r3-linux-x86-crystax-3.tar.bz2 106.269 MB a13a9f42bc0d610...e733a698ae1cb6

How to build

You can also build your own distribution if you don't want to use my prebuilt versions. To do it, follow instructions below.

Required development tools:

  • For Windows, a recent release of Cygwin is required
  • GNU Make 3.81 or later
  • GNU Makeinfo (most recent version)
  • GIT (for downloading toolchain sources)
  • Most recent GNU Libtool packages (automake, autoconf etc)
  • GNU C/C++ 3.x or later (for Windows, it should be exactly 3.x, not 4.x)
  • ncurses library (for Cygwin, it should be ncurses-devel package)
  • GNU flex (most recent version)
  • patch utility. Most likely, it is already installed if you are using Linux or Mac OS X; however, in Cygwin it should be installed explicitly


  • Download my patch and store it somewhere
  • Download android-ndk-r3 for your platform from android web site
  • Unpack downloaded file and go to directory android-ndk-r3
  • Apply my patch:
    patch -p1 <path-to-my-patch
  • Point environment variable ANDROID_NDK_ROOT to the current directory:
    export ANDROID_NDK_ROOT=`pwd`
  • For Windows, point environment variable CC to the GCC 3:
    export CC=gcc-3
  • Download android toolchain sources:
    ./build/tools/ --release=myrelease
    It will take some time depending on you network connectivity. Finally, it will download sources and pack them to the package /tmp/android-ndk-toolchain-myrelease.tar.bz2
  • Run build script:
    ./build/tools/ --package=/tmp/android-ndk-toolchain-myrelease.tar.bz2
    It will unpack android toolchain sources (including binutils, gcc and gdb), patch and compile them. It could take lot of time depending on your configuration so be patient.
  • Finally, when build script finished, it will print name of the compiled toolchain (something like /tmp/android-ndk-prebuilt-20100309-linux-x86.tar.bz2, actual name will depend on current date). Run the commands:
          rm -Rf ./build/prebuilt
          tar xjvf /tmp/android-ndk-prebuilt-20100309-linux-x86.tar.bz2
  • Now you are ready to test it. Try to compile application hello-jni (I've modified it, so there are STL and exceptions in the code) using instructions from Android team
  • Enjoy!


Our contributors: