Ive been going through the same issue and unfortunately there isnt a clear cut answer. Initially i was looking at phonegap, titanium and rhomobile. The problem with them is each has pros and cons and its very confusing to really understand what they are. Theres also fanboys of each which makes it even more difficult to understand what separates each.
You can also go the jquery mobile/sencha touch/mobile rails route which is the direction i am going somewhat myself. These are actually pretty nice and fairly powerful for a basic application. Although jqeury mobile is newly developed as is mobile rails whereas sencha touch is pretty mature. Theres also jquery touch but i dont really know that much about it.
The question really comes down to what is the application doing. If you are doing a game you have to go native unless you can do something with html5 canvas. Also if you need to use something like gps or the camera or the accelarator you have to go either native or use phonegap, appcelarator or rhomobile as html5 through just a mobile browser cant give you access to the hardware.
What ive been ending up doing is just using straight jquery because im familiar with it and then seeing where my apps need to go.
Just to add that you cant write write native ui code in android with c++. The NDK is used for games and 3d applications or to access libraries that are coded in c++ already.
Another question is will you also have to make your app availalable to blackberry or other devices such as an ipad. If so then phonegap rhomobile appcelarator and sencha touch, jqeury mobile yada yada yada might work best because theyre focus really is one having one codebase be able to be used on multiple platforms.
If you only have to target the iphone and android and you have a mac and want to learn how to code each then just go native. Ive played around with android myself so i understand why that would be needed as opposed to using html5. But if you havent done that then it wont make sense.
Oh good luck to you in your endeavor. Building mobile apps are fun but a pain in the ass right now because of all the fragmentation.
Actually, as mentioned here already, you don't have to go native if you're writing a game. You can use Corona with great success, or Unity3D if you're going the 3D route.
You can also go the jquery mobile/sencha touch/mobile rails route which is the direction i am going somewhat myself. These are actually pretty nice and fairly powerful for a basic application. Although jqeury mobile is newly developed as is mobile rails whereas sencha touch is pretty mature. Theres also jquery touch but i dont really know that much about it.
The question really comes down to what is the application doing. If you are doing a game you have to go native unless you can do something with html5 canvas. Also if you need to use something like gps or the camera or the accelarator you have to go either native or use phonegap, appcelarator or rhomobile as html5 through just a mobile browser cant give you access to the hardware.
What ive been ending up doing is just using straight jquery because im familiar with it and then seeing where my apps need to go.