ubuntu 9.04下查看android源码

本文介绍了一种通过在Android源码中添加Log语句来跟踪应用程序执行流程的方法,特别是对于Contacts等复杂模块的理解非常有用。文章详细说明了如何在源码中插入Log标记、编译并安装带Log的应用,以及如何在Logcat中查看这些信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.目的:

我现在的目的:学会根踪源码的某个模块的运行轨迹。如查看源码中电话本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 (.后面有空格)


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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值