您的位置:首页 > 编程语言

FrameLayout measure过程源码Log全解析之二:修改framework代码,输出Log

2014-07-28 16:56 309 查看
流程

我们先修改一个FrameLayout.java文件,确认logcat可以使用,然后再阅读measure的代码,了解大概流程,以及不同类函数之间的调用关系,最后再加入Log代码详细分析measure过程。本篇为确认logcat可用。编辑器为Emacs24。

源码位置

我们要修改的代码位于

frameworks/base/core/java/android/




这里是安卓框架的源码。具体要修改的文件是截图里android目录下的

widget/FrameLayout.java


修改源码

顶部加入

import android.util.Log;




加入Log代码

protected void onMeasure(int widthMeasureSepc, int heightMeasureSpec) {
Log.i("FW", "FrameLayout  enter onMeasure(,)");
...
}



重新编译

退回到根目录,执行

make -j4
这次编译内容较少,时间比较短,在我的笔记本上大概用了15-20分钟。第一次编译用了好几个小时,汗。

启动模拟器

注意事项参看第一篇启动模拟器部分。

/Applications/Android\ Studio.app/sdk/tools/emulator @MyPhone -system system.img -ramdisk ramdisk.img


如果模拟器不能启动,比如卡在Logo,应该是修改代码的时候出现了什么问题,因为系统也用到了FrameLayout。这时候新开一个命令行窗口,输入:

adb logcat

就可以看到加载的过程,看看有没有什么错误出现。比如我就曾经有个null pointer exception,浪费了好久时间。

如果顺利的话,应该会看到:

测试Log代码

写一个简单的app, 在activity的xml中把最外面的layout改为FrameLayout,然后run,选择刚才用命令行启动的模拟器。

(下图padding什么的是AS自动生成的,不要也可以。)



如果顺利的话你会看到

07-28 04:01:21.099    1170-1170/creation.philip.frameworktest I/FW﹕FrameLayout  enter onMeasure(,)


下篇预告

下一篇我们将会阅读FrameLayout的onMeasure源码,看看onMeasure大致流程是怎样,是不是有点小激动呢。

----------------------------------------------------------------------------
FrameLayout measure过程源码Log全解析系列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐