Android
Android is the phone platform released by Google. I currently work at Google and previously worked on the Android team.
Before working for Google, I had been hacking on Android in my spare time since it came out. I created some programs and enhancements for the core of Android:
- ConnectBot - A SSH client for Android.
- Bypass Android setup - How to set up a G1 with old firmware without a SIM card.
- FLAC on Android - Patches to enable playing FLAC files on Android.
- Shrinking Android - Efforts into shrinking the build size of Android.
Development Notes
I work on the Android framework in my spare time. Setting up your development environment is the most tricky part. Here are some notes I collected:
-
function fsnod { mmm -j6 frameworks/base frameworks/base/core/res snod && adb shell stop && adb sync && adb shell start }- <romainguy> this will compile only the framework, make the system image, and sync framework.jar onto the device
- <romainguy> because it also recompiles the resources if necessary
-
adb shell setprop dalvik.vm.dexopt-flags v=n- <fadden> Seems to cut the dexopt-ing for core + apps to about 30 seconds
Mac OS X 10.6 Snow Leopard
- When installing Xcode, you must select the 10.4 SDK compatibility
option.
- Follow the instructions for installing Leopard's Java VM 1.5
- Load up "Java Preferences" and move "J2SE 5.0 64-bit" to
the top.
- Typing "
java -version" should show Java version 1.5.0.
- Typing "
- Apply patches to projects:
git fetch git://android.git.kernel.org/platform/system/core refs/changes/45/11845/4 && git cherry-pick FETCH_HEAD
Debugging Native Code
If you're working on the framework, you're in luck. Debugging native code is pretty easy. Here is how to do it for the emulator. For actual devices, you can forgo the port forwarding and substitute something else in for generic.
I'm assuming you're debugging a Java application which calls out to a
native library here. You can also replace app_process with
system_server or any other binary.
cd ~/mydroidlunch(select your target here: generic-eng)telnet localhost 5554- In telnet, type:
redir add tcp:10000:10000 - Press CTRL-] and, at the telnet> prompt, type:
quit
- In telnet, type:
- In another window:
adb shell gdbserver 10.0.2.15:10000 --attach [PID of program] arm-eabi-gdb out/target/product/generic/symbols/system/bin/app_process- In gdb, type:
set solib-search-path out/target/product/generic/symbols/system/lib:out/target/product/generic/symbols/system/bin - In gdb, type:
target remote localhost:10000