一.目的:
我現在的目的:學會根蹤源碼的某個模塊的運行軌跡。如查看源碼中電話本Contacts的執行方式,查看Browser的工作方式(各類中各方法功能實現)
二.有效的方法:
大多數教程都介紹採用debug方式來根蹤;這樣其實有很多不方便的地方,比如咱們不知道哪個類的功能,不好確定你的當前操作的準確地點。
所以,我採取android最神奇的發明:Log語句,它的神奇在於--在真機上運行時Log出來的打印數據也可以在控制檯上顯示。
這面的Log語句是我習慣的寫法:
1.//wu0wu是我在源碼上加的我本人修改的標記(和源碼的代碼區分)
2.我在Log的打印數據中先加我的標記:***wu:***"這樣在logcat信息裏一目瞭然。
3.在根着getClass().getName()這樣就可以打印出當前方法調用所在的類名。一下子就可以定位類的位置。
4."-->clearFormData()"是我在某個類裏的所有方法裏都加入了上面的那句Log語句,所以這裏是當前方法名。一下子定位當前的方法調用位置。
三.編譯模塊
1.我們在源碼的com.android.contacts包下的所有類的所有方法都加這句Log語句。
2.在ubuntn的終端命令窗口中進入源碼文件夾,執行. build/envsetup.sh (.後面有空格)
3.使用mmm來編譯指定目錄的模塊,如Contacts:
mmm packages/apps/Contacts
4.編譯完後生成兩個文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/
Contacts.apk
5. 使用make snod重新生成system.img
6. 運行模擬器emulator
7.在 emulator中操作Contacts(你想查看的模塊,這樣你在adb logcat中就能一眼看到你所加的Log標記了)
四.在Logcat中查看顯示結果
adb logcat