Please note that these Trac pages are no longer being updated. Wiki contents/documentation have moved to GitHub.

Version 27 (modified by albert, 7 years ago)


Seattle on Android

This page discusses our port of Seattle to the Android platform. You will be able to download a native Android installer (APK) Real Soon Now from our clearinghouse web site. In the meantime, find instructions how to install Python, the Seattle runtime, and the Seattle Node Manager below.

 Our device here is a ZTE Blade Android 2.3 ("Gingerbread") phone running Cyanogenmod 7.


Here is a general outline of steps to be performed. You will get access to Python, Repy (Seattle's runtime), and the Seattle Node Manager, respectively.

  1. Set up  Python for Android (Py4A).
  2. Check out? the latest version of Seattle from SVN (r5656 and later should work).
  3. Install Seattle on the command line. This won't give you autostart capabilities, though.

Setting up Python

  1. On the home screen, press Menu. Go to Settings > Applications and make sure Unknown Sources is checked. This is needed for installing non-Market APKs right after downloading them.
  2. Download the Python 2.6.2 interpreter for Android ([Py4A]) from  here. Tap on the download notification to install. Congratulations! You can now run Python code from within the Py4A GUI, either using scripts from files or an interactive interpreter.
  3. Undo Step 1 for obvious security reasons.

Python from shell

Shell access to the Python interpreter is tricky to add because the shell knows nothing about Python's paths yet. Depending on which shell you have, there are different routes to take from here. Be sure to adapt the actual paths to your device/installation.

For sh (which is the default shell also greeting you via  adb's shell command), I don't know yet where it takes its run commands (.shrc) from. If you have  Jackpal's AndroidTerm2 installed, you could write an rc script and configure AndroidTerm to run it on startup: Press Menu, go to Settings > Start command and enter /path/to/your/script.

For bash, mount /system/etc writable by issuing mount -o rw,remount /system as the superuser. Add the following lines to /system/etc/bash/bashrc :

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/data/com.googlecode.pythonforandroid/files/python/lib
export PYTHONPATH=/mnt/sdcard/com.googlecode.pythonforandroid/extras/python:/data/data/com.googlecode.pythonforandroid/files/python/lib/python2.6:/data/data/com.googlecode.pythonforandroid/files/python/lib/python2.6/lib-dynload
export PYTHONHOME=/data/data/com.googlecode.pythonforandroid/files/python
export TEMP=$TEMP:/mnt/sdcard/com.googlecode.pythonforandroid/extras/python/tmp/
export PATH=$PATH:/data/data/com.googlecode.pythonforandroid/files/python/bin

(The last line is needed to make the Popen calls to the Python interpreter work). These lines are inspired by  this file in the Py4A repository.

#!comment out all of their path names work on our phone. I'm not blaming the original authors -- pathnames are a botch in Android, everything shows up in multiple places (/etc == /system/etc and so on), and all of a sudden you find yourself on a device not supporting links (sdcard, its filesystem is VFAT) or mounted read-only but listed as temp directory.

Setting up Repy

Repy is the restricted version of Python Seattle supports. To install the Repy runtime environment, you need to prepare the required files beforehand:

  1. Check out trunk (>=r5656) from Seattle's SVN
  2. Create a directory for the required files, let's call it /target.
  3. Inside trunk, run python /target.
  4. Download a restrictions file such as this one to /target.

Finally, upload the contents of /path/to/files to your Android device, e.g. using adb push /target /seattle/on/android/directory. Congrats, now you can run python restrictions.that_you_have your_script.repy!

Setting up Seattle

Donating resources

Although installing Seattle through the install scripts doesn't work in all aspects right now, you can still donate resources by manually starting the node manager.

  1. If you didn't patch already, do it now, according to the patch above.
  2. Decide whom to donate your resources to. If you want to donate to the general public, proceed to the next step. To make sure you and your developer friends have access to the device, create a  customized installer ( how to) including everyone's public user keys. If you already have the Seattle files on your Android device, just overwrite the vesselinfo file with the version found in the customized installer.
  3. Check if from the Seattle archive you extracted already includes the line import tempfile. Else grab a current version  (>=r4407) from SVN that doesn't use a hardcoded temp directory.
  4. Run python You might want to increase the percentage of resources donated using e.g. --percent 50. On our phone, 10 percent of resources mean even allpairsping needs to much RAM to run. The installer will claim it's installing on a Nokia N800/900 (due to it recognizing an ARM6 processor), and won't be able to configure Seattle for autostart.
  5. You might want to run python & now. Note that it will overwrite all your precious patched files, and I'm not quite sure how to find out that it has finished before you reapply the patches.
  6. Run python It will take a while to register at the advertisement server.
  7. If you downloaded a customized installer that has your user key in the vesselinfo file, you can try to access your device using seash now.

Although the node manager is not registered to automatically start when the device boots, it can be run manually now. The software updater isn't started automatically either. It might be a good idea to run it from time to time to make sure you benefit from the latest improvements. Don't forget to apply the patches afterwards.