Developers are stepping back from BlackBerry because they say creating apps is too complex and costly for the size of the market. RIM’s devices have different screens sizes, varied operating systems and several ways to navigate, from a physical keyboard to touchscreen to a scroll button. In deploying Apple applications, there are very few surprises . . . In Android, there are increasingly more surprises. But in BlackBerry, there are immediately lots of gotchas across the board.

>One idea - could there be a "common" API between all these devices that one could use? Hence, a developer could "code once" and "deploy for all"?

Of course not.
Apps would have to be tailored to the lowest common denominator.
The app would have to adapt to the poorest sound capability of the 3, with the poorest graphics of the three, fit to run on the slowest processor of the three, etc. And on top of all that: accommodate for all different interaction models. In short: a bad idea.