Python for Android

Think Java's the only game in town when it comes to programming Android apps? Think again.
Preparing the Android Emulator

Within the tools directory, only two programs are of interest to you. The adb utility allows you to transfer files to (and from) your Android emulator (more on this utility later). The android tool lets you prepare and run an emulator for any number of the current Android releases, and that's what you do next:

$ cd Android/tools
$ ./android

The android command starts the Android SDK and AVD Manager, which is a tool that creates Android emulators for any number of Android virtual devices. At the moment, there are no virtual devices, so you need to create one. However, before this can happen, you need to install a target Android API package. To do that, click on the Installed Packages tab, then press the Update All button. In the dialog that appears, click Accept All and then press the Install button.

The resulting download takes a while, so drag yourself away from your computer and head off into the kitchen to make a nice cup of coffee. Depending on your download speed, you may have time to make a quick sandwich too.

With the download(s) complete, let's create an Android Virtual Device (AVD). An AVD is a virtual version of an Android device that you can run on the emulator. Select the Virtual Devices tab, then click on the New button. A dialog appears that you can use to set the characteristics of your AVD. Figure 1 shows that I've given my AVD a name (LJapp), selected an API target (API Level 7, which is Android 2.1) and set my virtual SD card to 256 meg. When you have made your selections, click on the Create AVD button to initialize your AVD.

Figure 1. Setting the defaults for your emulated Android virtual device.

If you return to the Virtual Devices tab, your LJapp AVD now should exist. Select the AVD and press the Start button, then select the Launch button from the displayed dialog. The emulator starts to load, and after a few seconds, you see the opening screen for your emulated Android device (Figure 2). Note that the emulator runs much more slowly than the actual physical phone, so it may take a while to get to the Android startup screen. Your mileage will vary, depending on the speed of your desktop's processor.

Figure 2. Your Android emulator is ready.

Note: throughout the remainder of this article, I use the word “tap” to refer to using the mouse to click within the emulator. There is no mouse pointer on your physical Android device (that's what your finger is for), but the emulator needs something, so the mouse pointer “emulates” your finger, hence the use of the word tap to describe the action required. When you see me use the word tap, think click.

Installing SL4A

Getting the SL4A on your emulator is straightforward. Start by tapping the Android browser and surfing to the SL4A Web site:

When the SL4A Web page appears, tap on the square graphic (the QR Code) to access the download URL for SL4A. The download should begin immediately, and once it completes, tap the downloaded package name (which is sl4a_r3.apk at the time of this writing) to install SL4A. Go ahead and tap on the Install button, then tap on the Open button to start the app. You'll be asked to participate in usage tracking (it's up to you, and it's optional), and then SL4A informs you that you have “No matches found” under your Scripts listing. That's okay; you've yet to install any scripts. SL4A now is ready for Python.

Installing Python for Android

Return to the Android browser and double-tap the screen to enlarge the Web page. Locate the Featured Downloads part of the page on the right, and tap on the download arrow beside the python_for_android_r1.apk link. As before, let the download complete before tapping on the downloaded file to install it. When you're ready, tap the Install button to confirm the installation of the interpreter. When this completes, tap on the Open button, then tap on the big Install button to complete the installation. The Python for Android app downloads, extracts and installs the Python support files from the SL4A Web site and adds them into SL4A. The entire process should take only a minute or two to complete. If it takes longer than a few minutes, take a deep breath, and remember that the emulator is much slower than your physical device.

When the installation completes, you'll be presented with an Uninstall button. Don't tap this button! If you do, you'll remove the Python interpreter that you've just installed. Instead, tap on the emulator's home button (the little house icon) to return to the Android main screen, tap the tab at the bottom of the screen to see the list of installed apps, and note that SL4A has been added to your emulator (Figure 3).

Figure 3. Your Android emulator has SL4A installed and is ready for action.

Go ahead and tap the SL4A icon that now displays the list of installed Python scripts. Tapping the script pops up the SL4A run menu (Figure 4). Looking from left to right, the menu icons have the following meaning: 1) run the script at the Python shell, which is useful when debugging; 2) run the script “natively”; 3) edit the script in SL4A's built-in text editor, which is useful only for the most trivial of changes; 4) rename the script; and 5) delete the script. To test your installation quickly, tap the second menu icon, which I like to refer to as the “run wheel”. After a second or two, a message saying “Hello, Android!” appears on screen for a few seconds then disappears.

Figure 4. SL4A Menu Icons

If that worked, tap the script, then tap the run wheel. This runs a longer-running script that showcases some of the facilities available to you as a Python programmer working on Android. Again, bear in mind that the emulator runs slowly, so be patient and wait for the various Android interface elements to appear.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Looks like Paul's been time

Anonymous's picture

Looks like Paul's been time travelling again. i like the article though. It covers exactly what i have spent the past hour searching for.

Well at least you got the

Jayson's picture

Well at least you got the info a week early! ;) This is a very comprehensive article about app programming. While I don't have the technical expertise to craft the SL4a technique without conquering a steep learning curve, it does open my eyes to a new way to do things. This is particularly helpful since I've been learning how mobile solutions are being tapped into by users. As one can imagine, a company that does mobile marketing(example: is going to have different needs then a company that specializes in manufacturing, or a user who wants to simplify his/her "mobile" life. Right now I fall into the latter category, but that doesn't mean I won't have a vastly different agenda in regards to app programming in the future.

Time will tell if Android development via Python is something I will tap into, but it's nice to have the programming app horizon broadened. Options are good!


DaNmarner's picture

this essay is posted on "Apr 30, 2011 By Paul Barry in Mobile". And today is Apr 23.

I noticed that to. I wonder

Justin C's picture

I noticed that to. I wonder what planet he was on when he published the article.