Android 平台代码很多,关系也很复杂,通常我们调试程序的时候是无法跟踪到Android framework code 里的,如果能调试跟踪 Android source code 将给我们这些初学者带来很多便利,本文将给出一个调试跟踪 Android source code 的方法。
1. 首先,得到 Android 源代码(可参考之前的文章 -- 如何获取 Android 源代码并编译 .doc),并且编译,得到 output file ,在 (Android source)/out 目录下,也可通过别的途径获取 Android source code ( 以 androidsrc.tgz 为例 ) 和别人编译好的 outputfile(out.tgz )
2. 解压缩这两个 tgz 文件,并把解压出来的 out 目录放到 myandroid 目录下,如下图所示。
3. 拷贝 myandroid/development/ide/eclipse/.classpath 到myandroid/.classpath .
4. 拷贝 myandroid/out/target/product/generic/*.img 到 {AndroidSDK}/tools/lib/images 并且覆盖源文件 .
5. 运行 {AndroidSDK}/tools 目录下的 emulator.exe .
6. 运行 {AndroidSDK}/tools 目录下的 ddms.bat 。你可以看到下面的窗口,里面会列出当前 emulator 里跑的进程 :
7. 启动 eclipse ,按照这个步骤 File->New->JavaProject ( 不是 AndroidProject!) ->Createproject from existingsource 选到 myandroid 目录 .
8. 在经过长时间等待之后, Android source code 将被导入 project ,正常情况下应该没有error ,但是会有很多 warning ,如果有 error 后面的 debug 将不会成功,原因可能是output file , out.tgz 在解压得过程中出错,重新 copy out.tgz ,或者完整拷贝 out/ 目录到本地目录下,即可解决。
9. 选择想要调试的进程在 DDMS, 用 phone 进程为例, ddms 一定要在 eclipse 之前启动,否则 eclipse 启动的时候也会启一个 ddms ,会造成冲突。
10. 在 eclipse 里 , Run->DebugConfiguration->Remote JavaApplication->New ,设置 Connection port to 8700(DDMS’s 默认端口,你可以改变它 ).
11. 设置断点在 source code ,然后就可以像往常一样进行调试了。