Can someone give a summary of what the NDK does with my application, with which devices can use the application
Only applications running on a processor for which you have NDK .so will be able to run your application.
and what are the implications for maintaining my application?
Testing on multiple processor architectures may require hardware for each architecture. I say “maybe” because ...
What happens when new architectures for Android arrive?
... we really have no idea. Besides adding support for ARM7, the NDK has not changed its objectives.
There are currently two major non-ARM platforms for Android, which I can think of:
- Intel Atom used by Google TV devices. At the time of this writing, the NDK does not support this. However, you also cannot send applications for Google TV. Thus, it is possible that the NDK will be updated by the time we can write Google TV applications.
- MIPS At the time of this writing, the NDK does not support this. I have no idea what plans might be in this area.
Emulators are supposed to emulate these processors. In the end, the existing Android emulator mimics the ARM5. However, if and until this happens, you will need test equipment for each architecture that you intend to support.
Do I need to update the application every time a new architecture appears?
Only to support the new architecture. Until there is a critical mass of devices that can access your application, any new architecture will not be very important. The "critical mass" may be from the general sales of devices, or it may be because you are making a deal with OEM so that your application is connected to someone else's device.
The code is simple, although it will work on all arches.
Watch your concept.
CommonsWare
source share