I have been asked to evaluate the Android platform for our product and I am looking at various options, I am only just scratching the surface just now and the one thing that
Specifying the following flag for a module in Android.mk will compile straight ARM code.
LOCAL_ARM_MODE := arm
Enabling optimization may also help:
LOCAL_CFLAGS := -O3
You can build in ARM, Thumb, or a mix of the two.
In the makefile, in LOCAL_SRC_FILES, where you would list MyFile.c, specify MyFile.c.arm (do not rename the file on disk, just do it in the list of source files). This convention is used throughout Android for code that is performance-critical (or just needs to be ARM for some reason).
The usual notes apply, of course: Thumb code tends to require more instructions to accomplish something, but each instruction is half the size, so the code is usually a bit slower but also a fair bit smaller. In some situations the smaller size allows a better fit with the (tiny) caches in the ARM CPUs, and could actually be faster.