一.目的:

我现在的目的:学会根踪源码的某个模块的运行轨迹。如查看源码中电话本Contacts的执行方式,查看Browser的工作方式(各类中各方法功能实现)

二.有效的方法:

大多数教程都介绍采用debug方式来根踪;这样其实有很多不方便的地方,比如咱们不知道哪个类的功能,不好确定你的当前操作的准确地点。

所以,我采取android最神奇的发明:Log语句,它的神奇在于--在真机上运行时Log出来的打印数据也可以在控制台上显示。

/* package */ void clearHistory(Context context) { // WU0WU Log.v(LOGTAG, "***wu:***" + getClass().getName() + "-->clearHistory()"); ContentResolver resolver = context.getContentResolver(); Browser.clearHistory(resolver); Browser.clearSearches(resolver); }

这面的Log语句是我习惯的写法:

1.//wu0wu是我在源码上加的我本人修改的标记(和源码的代码区分)

2.我在Log的打印数据中先加我的标记:***wu:***"这样在logcat信息里一目了然。

3.在根着getClass().getName()这样就可以打印出当前方法调用所在的类名。一下子就可以定位类的位置。

4."-->clearFormData()"是我在某个类里的所有方法里都加入了上面的那句Log语句,所以这里是当前方法名。一下子定位当前的方法调用位置。

三.编译模块

1.我们在源码的com.android.contacts包下的所有类的所有方法都加这句Log语句。

2.在ubuntn的终端命令窗口中进入源码文件夹,执行. build/envsetup.sh (.后面有空格)

ubuntu 9.04下查看android源码

3.使用mmm来编译指定目录的模块,如Contacts:

mmm packages/apps/Contacts

ubuntu 9.04下查看android源码

4.编译完后生成两个文件:

out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/ Contacts.apk

5. 使用make snod重新生成system.img

ubuntu 9.04下查看android源码

6. 运行模拟器emulator

7.在 emulator中操作Contacts(你想查看的模块,这样你在adb logcat中就能一眼看到你所加的Log标记了)

四.在Logcat中查看显示结果

adb logcat

ubuntu 9.04下查看android源码


相关文章:

  • 2021-12-04
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2021-08-22
  • 2021-11-09
  • 2022-12-23
猜你喜欢
  • 2021-09-28
  • 2021-10-09
  • 2022-12-23
  • 2021-08-13
  • 2021-07-10
  • 2021-10-19
  • 2022-02-06
相关资源
相似解决方案