摘要
研究Android, 最好的方法莫过于Step by Step地Debug。本文记录了下载编译x86 emulator及Debug Java Frame和C++库的过程。以WebKit为例,介绍Android的调试过程。
代码下载
从Google下载源码,本文以Android 4.2.2 r1学习WebKit为例。如果你也和我一样从Google下载Android源码有困难,可以从这里下载
下载eclipse: >>>>
下载ADT, 需要和Android SDK对应,查看一下Android 4.2.2 r1的SDK需要的ADT版本是20.0.0
$ cat sdk/files/plugin.prop
# begin plugin.prop
plugin.version=20.0.0
http
://
dl.google.com/android/ADT-21.0.0.zip
编译之前
先解决两个编译bug: http://blog.csdn.net/telnetchen/article/details/17596181
加上调试所需要的编译选项
在这里加上framework的调试信息
frameworks/base/core/java/android/webkit/DebugFlags.java
拷贝build/buildspec.mk.default到根目录并且改名为buildspec.mk,加入以下内容:
DEBUG_MODULE_libwebcore:=true
DEBUG_MODULE_libxml2:=true
DEBUG_MODULE_libchromium_net := true
TARGET_CUSTOM_DEBUG_CFLAGS:=-O0 ADDITIONAL_BUILD_PROPERTIES += debug.db.uid=100000
查找所有模块:
确认以下的配置(false),以免出现文件过大的编译错误
external/webkit、Android.mk:
LOCAL_PRELINK_MODULE := false
编译
source build/envsetup.sh
lunch full_x86-eng
make sdk -jx
生成的SDK目录:out/host/linux-x86/sdk/android-sdk_eng.${USER}_linux-x86
安装ADT及指定SDK
打开Eclipse, Help -> Install New Software ...
安装完ADT后,Eclipse要求重启,启动起来会要求SDK
创建一个简单的WebKit应用并开始调试
Java部分可以在Eclipse中逐步跟踪,对于C++部分,还需要用gdb
Run the following command on your computer: adb forward tcp:5039 tcp:5039 Run the following command on your running emulator: gdbserver 10.0.2.2:5039 attach pid Run the following commands in gdb: set solib-absolutep-refix out/target/product/generic_x86/symbols set solib-search-path out/target/product/generic_x86/symbols/system/lib file out/target/product/generic_x86/symbols/system/app_process在某个地方设置一个break point,就可以用你喜欢的gdb了.
对于Java部分如果还提示找不到某个文件,可以让它去framework目录下继续找。