I recently upgraded my aging Google Dev Phone to the most recent version of Android. On top of that I installed Processings Android-capable build, so I can now write Android apps in a few familiar lines of Processing code.
Here's the steps it took. The guides online for doing this are quite good, but cover all kinds of caveats which make them harder to read than necessary, and makes the process look much more daunting than necessary.
I'm upgrading to Cyanogenmod 6, based on Android 2.2 - aka Froyo. That upgrades wipe whatever apps you had installed before, from your phone. I'm fine with that, but if you don't want to start over from a blank slate this is not for you.
Also, the upgrade wipes the list of APNs from your configuration - so take your current 3G settings and make a note of them, so you don't have to scour the internet to find them again when you set up your freshly built phone.
Also II: The upgrade also wipes all your text messages and call logs from your phone. Ritesh Sahu makes nice backup apps for both, so use those before the install if you care about your logs and texts. They're in the Android Market, just search for 'call log backup' or 'sms backup'.
Note that, of course, I can't promise you this will work for you. This is what worked for me
First gather all the downloads you need for the install. These are, in order (I'm linking to guides with up to date links to downloads)
Amon Ra recovery image,
New radio firmware (<- maybe, I had this from a Jesusfreke install of 1.6 last summer, already),
DangerSPL,
Cyanogenmod 6,
Gapps - tiny version
- I'm assuming you're a developer kind of guy, so you probably have the Android SDK in some version already. You'll need the fastboot tool from the SDK during this process.
- I'm also assuming your phone is already rooted. This is the case for a Google Dev Phone.
What you want do to is read through the caveats and follow this guide
What that means in short, is:
You might have the android SDK already, make sure you have API version 7 in your SDK setup. To do that, find the 'android' executable, which is the SDK manager, and make sure your SDK includes API 7. You upgrade the SDK from within the manager if these are missing. You need both the API 7 itself and the "Google libs for API 7".
Now get the experimental build of Processing that includes android support.
After installation, Processing will ask for the location of your SDK, when you try to enable Android support for a sketch (which is Processing's name for projects). A little gotcha here: When you try to build for your phone, Android will use a development certificate to sign your app. These can get stale, and your build will fail. Just delete it, and rebuild, to fix. On OS X - what I run - it should be ~/.android/debug.keystore you want to delete.
Now grab one of the simple Android examples from the File|Examples menu - I went for a simple 2D sketch demonstrating mouse input. Drop the code from that into your Android-enabled sketch (or Android-enable the example sketch) and build. Running the sketch should happen in the emulator. To copy it to your phone use the 'Present' option from your build menu.
The first thing I thought when I saw Double Rainbow Guy in action was that I really needed this for my alarm clock. Scouring the Internet, I found instructions on how to add new alarm sounds to an android phone: Simply create the directory
/system/media/audio/alarms
You can get the audio here.
Tetherbot is handy for quick and dirty internet access through your Android phone. It's not full on tethering - since you don't get a network interface - but having a Socks proxy works out fine in a pinch.
The only thing about it that isn't absolutely obvious is that proxying does no good if you don't have DNS. Firefox does not, by default, proxy DNS requests over SOCKS even if you set it up to use a SOCKS proxy (would be intelligent to do so, when the regular network interface is down, but there you are).
To make this work you need to open a tab to about:config and find the network.proxy.socks_remote_dns setting and set it to true. You should set your socks proxy to be a SOCKS5 proxy btw.
That's all - now Firefox is proxied, and that's good enough for me. Almost everything I need can in turn be reached via the browser.
(exception is SSH, but that's easy to fix. Follow the "port bouncer" instructions for Tetherbot).