6 Answers
6

The developer who uploaded an app version can download that version's
code using the appcfg.py
download_app command. This feature can
be disabled on a per application
basis in the admin console, under the
'Permissions' tab. Once disabled,
code download for the application
CANNOT be re-enabled.

Note that although the 'download_app' command is only available in the Python SDK, it can be used to download Java applications from App Engine. If you have a Java app that you want to download, just do:

Install Python (version 2.x only), if necessary.

Install App Engine 1.4.0 (or higher), Python version.

Run the python download_app command as described in the documentation, like appcfg.py download_app -A <your app name> -V <version to download> <path to download to>.

FWIW, the makefile I use to update to appengine first makes a zip of the source, which can be downloaded from the app (static file). The name of the archive includes the svn revision number, and the makefile refuses to upload if the current revision is mixed (on grounds that it would not necessarily be reproducible from the repository). This avoids needing any Python code to support the download.
–
Steve JessopJul 28 '09 at 11:51

Also notice that when you run this command and you get asked for your password and you happen to have activated Google's 2-step verification, you must not provide your Google password, but instead must provide an application-specific password (which you can generate on this side)

I did this to download my app, and then used the following code (after adjusting "WEB-INF\appengine-web.xml" to change the version#) appcfg.cmd update c:\path\to\download\directory but Im now getting an error when trying to run the app Uncaught exception from servlet java.lang.NoClassDefFoundError: com/google/appengine/repackaged/com/google/protobuf/InvalidProtocolBufferExcepti‌​on
–
johnvdenleyNov 24 '12 at 18:26