Over time the number of smartphone platforms has increased considerably, and the different variations of screen resolutions, bit-depths and device capabilities has not made it any easier to make applications which work across platforms.
This where solutions such as Adobe AIR stand out. With Adobe AIR, you need only develop your application once, in ActionScript 3 and you will be able to have the same application running on any device to which Adobe AIR has been ported, and over time the number of such platforms will only increase. Already you can have your AIR-based application running on Windows, Linux, MacOS X, Android, and the iPhone. Soon such applications will run on the Blackberry Tablet as well. The same applications, with reduced / different functionality can run on the web too using the Flash Player.
While RIAs can be deployed to mobiles using HTML5 (or even 4) and Flash, AIR application have an edge as they have greater access to the system's functionalities, such as the location, orientation and acceleration sensors that can enhance the experience of any RIA.
Adobe's AIR is not the only solution for this functionality though, however most solutions lack somewhere when it comes to cross-platform development. Here are a few examples:
PhoneGap: This is a brilliant open-source solution for targeting multiple phone platforms. It currently supports more platforms than Adobe AIR, having support for iPhone, Android, BlackBerry, Symbian and Palm. It's roadmap includes support for Maemo and Windows Mobile as well.
MonoTouch and MonoDroid: MonoTouch is a commercial toolkit available from Novell which allows developers to create applications for iOS devices, the iPhone and iPads using C# and .NET. As it's name suggests, it is based on the Mono framework which is an open-source implementation of Microsoft's .NET framework.
While it only allows developers to target the Apple's devices, it does help developing cross-platform applications by allows code reuse between Linux, Windows, Mac OSX and iOS. In fact Mono applications can also run on Nokia's Maemo devices, and soon on Android via MonoDroid. Unlike Mono applications though, MonoTouch are compiled instead of being executed by a JIT compiler.
While Mono makes Windows applications cross-platform by making it easier to port them to Linux, and Mac OSX, MonoTouch makes it easier to port functionality from those applications to iOS. MonoTouch is thus only suitable if you have .NET code you want to port to iOS, or if .NET is your area of expertise and you want to use it to build iOS applications, since that is all it is capable of targeting for now. For deploying applications to multiple mobile platforms MonoTouch isn't suitable.
As more mobile application stores open, there is a clear trend towards making your application available for as many platforms as possible. While applications developed using the native toolkits provide a clear advantage over cross-platform applications when it comes to performance, and in utilizing platform-specific features, this is only something which will improve with time. Cross-platform toolkits are the way to go for RIAs as they let the developer focus on their application without needing to worry about how to port it to plethora of platforms available today.