You can also use game engines like Unity3D to create awesome content for smartphones. You can create 3D as well as 2D games with Unity3D.
First of all you need to have the Software Development Kit for the preferred platform that you are building the application for for example for Android you need to have Android Development Toolkit in your system. Then you just need to set it up with the Unity3D game engine. Now, you just need create your game or application once on Unity3D. After that you can deploy it on a number of platforms of smartphones like Android, IPhone, Blackberry, Windows, etc.
So, this would be a great option for someone who intents to create applications for different platforms.
The best thing about Unity3D is that it has a fully functional free version which can be used even to make games and use it commercially.
To publish the app you need to create an account in Google Play (or whatever platform you prefer) with a small amount of fees. You can do that by following the steps provided in the answer above.
I hope this helps you out.