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:
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 }
adb shell setprop dalvik.vm.dexopt-flags v=n
java -version
" should show Java version 1.5.0.git fetch git://android.git.kernel.org/platform/system/core refs/changes/45/11845/4 && git cherry-pick FETCH_HEAD
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 ~/mydroid
lunch
(select your target here: generic-eng)telnet localhost 5554
redir add tcp:10000:10000
quit
adb shell gdbserver 10.0.2.15:10000 --attach [PID of program]
arm-eabi-gdb out/target/product/generic/symbols/system/bin/app_process
set solib-search-path out/target/product/generic/symbols/system/lib:out/target/product/generic/symbols/system/bin
target remote localhost:10000