Android NDK MIPS32 instruction set support


Android NDK r8 added support for the 'mips' ABI, that allows native code to
run on Android-based devices running on CPUs supporting the MIPS32 instruction

The Android 'mips' ABI itself is fully specified in docs/CPU-ARCH-ABIS.html.


Generating mips machine code is simple: just add 'mips' to your APP_ABI
definition in your file, for example:

    APP_ABI := armeabi armeabi-v7a mips

Alternatively, since NDK r7, you can use:

    APP_ABI := all

will generate machine code for all supported ABIs with this NDK. Doing so
will ensure that your application package contains libraries for all target
ABIs. Note that this has an impact on package size, since each ABI will
correspond to its own set of native libraries built from the same sources.

As you would expect, generated libraries will go into $PROJECT/libs/mips/, and
will be embedded into your .apk under /lib/mips/.

And just like other ABIs, the Android package manager will extract these
libraries on a *compatible* mips-based device automatically at install time,
to put them under <dataPath>/lib, where <dataPath> is the
application's private data directory.

Similarly, the Android Market server is capable of filtering applications
based on the native libraries they embed and your device's target CPU.

Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.


It is possible to use the mips toolchain with NDK r8 in stand-alone mode.
See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking,
it is now possible to run:

  $NDK/build/tools/ --arch=mips --install-dir=

The toolchain binaries have the mipsel-android-linux- prefix.


The minimal native API level provided by official Android mips platform builds
is 9, which corresponds to all the native APIs provided by Android 2.3, i.e.
Gingerbread (note also that no new native APIs were introduced by Honeycomb).

You won't have to change anything to your project files if you target an older
API level: the NDK build script will automatically select the right set of
native platform headers/libraries for you. For mips, this still corresponds
to API level 9 and higher.