I like the Android platform. Actually, with some friends, we even participate in the ADC with the Spoxt project.
But Java is not my favourite language at all. We are working on an S60  version and this platform has a nice Python API. Of course there is nothing official about Python on Android, but since Jython  exists, is there a way to let the snake and the robot work together?
One way is to use Kivy :
Open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps.
Kivy runs on Linux, Windows, OS X, Android and iOS. You can run the same [python] code on all supported platforms.
There is also the new Android Scripting Environment  (ASE) project. It looks awesome, and it has some integration with native Android components. http://www.talkandroid.com/1225-android-scripting-environment/
An example via Matt Cutts  -- "here’s a barcode scanner written in six lines of Python code:
import android droid = android.Android() code = droid.scanBarcode() isbn = int(code['result']['SCAN_RESULT']) url = "http://books.google.com?q=%d" % isbn droid.startActivity('android.intent.action.VIEW', url)
"The Pygame Subset for Android  is a port of a subset of Pygame functionality to the Android platform. The goal of the project is to allow the creation of Android-specific games, and to ease the porting of games from PC-like platforms to Android."
The examples include a complete game packaged in an APK, which is pretty interesting. http://www.renpy.org/pygame/
There's also SL4A  written by a Google employee. http://code.google.com/p/android-scripting/
I've posted instructions and a patch for cross compiling Python 2.7.2 for Android, you can get it at my blog here: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/
EDIT: I've open sourced Ignifuga , my 2D Game Engine, it's Python/SDL based and it cross compiles for Android. Even if you don't use it for games, you might get useful ideas from the code and the builder utility (named Schafer, after Tim...you know who). http://ignifuga.org
I just posted some directions for cross compiling Python 2.4.5 for Android . It takes some patching, and not all modules are supported, but the basics are there. http://www.damonkohler.com/2008/12/python-on-android.html
As a Python  lover and Android programmer, I am sad to say this is not really a good way to go. There are two problems.
One problem is that there is a lot more than just a programming language to the Android development tools. A lot of the Android graphics involve XML files to configure the display, similar to HTML. The built-in java objects are really integrated with this XML layout, and it's a lot easier than writing your own code to go from logic to bitmap.
The other problem is that the G1 (and probably other Android devices for the near future) are really not that fast. 200 MHz processors, and RAM is very limited. Even in Java you have to do a decent amount of rewriting-to-avoid-more-object-creation if you want to make your app perfectly smooth. Python is going to be too slow for a while still on mobile devices. http://en.wikipedia.org/wiki/Python_%28programming_language%29
SL4A  does what you want. You can install it on your droid easily from their site, and don't need root.
It supports a range of languages, Python support is currently for version 2.6, but there's a 3.2 port  you can use too. I've used that port for all sorts on a Galaxy S2 and it worked fine.
SL4A scripts have a library available for each supported language that gives you an interface to the Android API as a single
import android droid = android.Android() # say "hello world" using the text to speech facade droid.ttsSpeak('hello world')
var droid = new Android(); droid.ttsSpeak('hello from js');
There's also some support for native Android user interfaces.
There's also a third party project named QPython  that builds on SL4A, and throws in some stuff of their own. It has more features, and is actively developed.
Not at the moment and you would be lucky to get Jython to work soon. If you're planning to start your development now you would be better off with just sticking to Java for now on.
Using SL4A  (which has already been mentioned by itself in other answers) you can run  a full-blown web2py  instance (other python web frameworks  are likely candidates as well). SL4A doesn't allow you to do native UI components (buttons, scroll bars, and the like), but it does support WebViews . A WebView is basically nothing more than a striped down web browser pointed at a fixed address. I believe the native Gmail app uses a WebView instead of going the regular widget route.
This route would have some interesting features:
From the Python for android  site:
Python for android is a project to create your own Python distribution including the modules you want, and create an apk including python, libs, and your application.
I use the QPython application. It has an editor, a console, and you can run your Python programs with it. The application is free, and the link is http://qpython.com/.
Yet another attempt: https://code.google.com/p/android-python27/
This one embed directly the Python interpretter in your app apk.
There's also python-on-a-chip possibly running mosync:
You can learn sl4a Python Examples . http://code.google.com/p/android-scripting/
Didn't see this posted here, but you can do it with Pyside and Qt now that Qt works on Android thanks to Necessitas.
It seems like quite a kludge at the moment but could be a viable route eventually...
I want to post this as an extension to what @JohnMudd has already answered (but please bare with me as English isn't my first language)
It has been years since then, and Kivy has also evoluted to v1.9-dev, the biggest selling point of Kivy in my opinion is its cross-platform compatibility, you can code and test under your local environment (Windows/*nix etc.), you can also build, debug and package your app to run in your Android/iOS/Mac/Windows devices.
With Kivy's own KV  language, one can easily code and build the GUI interface easily (it's just like Java XML, but rather than TextView etc., KV has its own ui.widgets for the similar translation), which is in my opinion quite easy to adopt.
Currently Buildozer  and python-for-android  are most recommended tools to build/package your apps. Having tried them both and I can firmly say that they make building Android apps with Python a breeze. Users who feel comfortable in their console/terminal/command prompt should have no problems using them, and their guides are well documented, too.
Futhermore, iOS is another big selling point of Kivy, provided that you can use the same code base with little changes required to test-run on your iOS device, via kivy-ios  Homebrew tools, although Xcode are required for the build before running on their devices (AFAIK iOS Simulator in Xcode currently doesn't work for the x86-architecture build). There are also some dependency issues which required manually compiled and fiddled around in Xcode to have a successful build, but wouldn't be too difficult to resolve and people in Kivy Google Group  are really helpful too.
With all being said, users with good Python knowledge should have no problem picking up the basics in weeks (if not days) to build some simple apps.
Also worth mentioning is that you can bundle (build recipes) your Python modules with the build so users can really make use of many existing libraries Python bring us, like Requests  & PIL  etc. through Kivy's extension support .
Sometimes your application requires functionality that is beyond the scope of what Kivy can deliver. In those cases it is necessary to resort to external software libraries. Given the richness of the Python ecosystem, there is already a great number of software libraries that you can simply import and use right away.
The last but no the least, if you are going to use Kivy for more serious/commercial projects, you may find existing modules not satisfactory to what are expected. There are some workable solutions too, with the "work in progress" of pyjnius  for Andoird, and pyobjus , users can now access to Java/Objective-C classes through those modules to control some of the native APIs.
My experience in Kivy is that it will find its best fit with seasonal Python programmers and some serious programmer who wants rapid development or simple code base maintenance. It runs well in multiple platforms, albeit not really at the level of native feeling.
I do hope more Python/app programmers find my little information useful and start taking a look of Kivy, it can only get better (with more supports and libraries/modules get ported) if there are great interests from the community.
P.S.I have no relationship with Kivy whatsoever, I'm merely a programmer who really likes the idea of bringing Python coding fun to mobile/cross-platform development. http://kivy.org/docs/guide/lang.html#kv-language
While there is one book called Developing Android on Android, of which introduce how to develop apps on the Android device by using the Python language, and this book should be a good start for you.