Android平台代碼很多,關係也很複雜,通常我們偵錯工具的時候是無法跟蹤到Android framework code裡的,如果能調試跟蹤Android source code將給我們這些初學者帶來很多便利,本文將給出一個調試跟蹤Android source code 的方法。
1. 首先,得到Android 原始碼(可參考之前的文章--如何擷取Android原始碼並編譯.doc),並且編譯,得到output file,在(Android source)/out目錄下,也可通過別的途徑擷取Android source code (以androidsrc.tgz為例) 和別人編譯好的 output file(out.tgz)
2. 解壓縮這兩個 tgz 檔案,並把解壓出來的out 目錄放到 myandroid 目錄下,如所示。
3. 拷貝 myandroid/development/ide/eclipse/.classpath 到 myandroid/.classpath.
4. 拷貝 myandroid/out/target/product/generic/*.img 到 {Android SDK}/tools/lib/images 並且覆蓋源檔案.
5. 運行{Android SDK}/tools目錄下的 emulator.exe.
6. 運行{Android SDK}/tools目錄下的 ddms.bat。你可以看到下面的視窗,裡面會列出當前emulator裡跑的進程:
7. 啟動 eclipse ,按照這個步驟 File->New->Java Project (不是 Android Project!) ->Create project from existing source 選到 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->Debug Configuration->Remote Java Application->New, 設定 Connection port to 8700 (DDMS’s 預設連接埠,你可以改變它).
11. 設定斷點在source code,然後就可以像往常一樣進行調試了。