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

Version 29 (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.

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 files we will upload to the Android device, let's call it /target.
  3. Inside trunk, run python /target.
  4. Download a restrictions file such as this one to /target.
  5. 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 from the command line!

Setting up the Seattle Node Manager

Before you can install the Seattle Node Manager, you need to tell the command-line installer which vessels of what size it should create, and who should be able to access them. For altruistic donations, use the vesselinfo file from  an installer package. If you want to have seash access to your own device, use the CustomInstallerBuilder. Either way, push the vesselinfo file into the directory you created for Repy. Then,

  1. 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 won't be able to configure Seattle for autostart.
  2. Run python It will take a while to register at the advertisement server.
  3. 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.