For native applications, the only cross-platform framework I am aware of is the Rhodes framework: http://rhomobile.com/products/rhodes
However, a word of warning, you actually code within the Rhodes framework which is Ruby-based. Their products take care of the necessary conversion to the appropriate phone platform environment. This conversion does not generate source code. In the case of Android, Rhodes generates Java bytecodes. For the other platforms, it has a Ruby interpreter that runs on the phones and executes the application as a Ruby app. This means that once you go down the Rhodes path, you are committed. You cannot change your mind six months down the road and just use the individual platform source code deck for each phone type as Rhodes does not generate it.
In addition, the installation/configuration of their product suite is not easy. Preston Thornton posted an entry last last year on how difficult the setup is for the product suite. It all depends on how important it is for you to support multiple platforms. For a single app that does a single task such as track a contact list, probably not. However, a mid to large size corporation that needs to rollout a major business app and support multiple smartphones, Android, iPhone, and Blackberry, Rhomobile is an attractive offering.