FrameLayout measure过程源码Log全解析之二:修改framework代码,输出Log
2014-07-28 16:56
309 查看
流程
我们先修改一个FrameLayout.java文件,确认logcat可以使用,然后再阅读measure的代码,了解大概流程,以及不同类函数之间的调用关系,最后再加入Log代码详细分析measure过程。本篇为确认logcat可用。编辑器为Emacs24。
源码位置
我们要修改的代码位于
这里是安卓框架的源码。具体要修改的文件是截图里android目录下的
修改源码
顶部加入
加入Log代码
重新编译
退回到根目录,执行
启动模拟器
注意事项参看第一篇启动模拟器部分。
如果模拟器不能启动,比如卡在Logo,应该是修改代码的时候出现了什么问题,因为系统也用到了FrameLayout。这时候新开一个命令行窗口,输入:
就可以看到加载的过程,看看有没有什么错误出现。比如我就曾经有个null pointer exception,浪费了好久时间。
如果顺利的话,应该会看到:
测试Log代码
写一个简单的app, 在activity的xml中把最外面的layout改为FrameLayout,然后run,选择刚才用命令行启动的模拟器。
(下图padding什么的是AS自动生成的,不要也可以。)
如果顺利的话你会看到
下篇预告
下一篇我们将会阅读FrameLayout的onMeasure源码,看看onMeasure大致流程是怎样,是不是有点小激动呢。
----------------------------------------------------------------------------
FrameLayout measure过程源码Log全解析系列
我们先修改一个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全解析系列
相关文章推荐
- FrameLayout measure过程源码Log全解析之四:onMeasure第一部分之ViewGroup对view的管理
- 【dubbo源码解读系列】之二 dubbo代码启动入口解析(自定义main方法)
- OpenStack建立实例完整过程源码详细分析(13)----依据AMQP通信架构实现消息发送机制解析之二
- Android View绘制过程,基于Framework源码解析
- Log.isLoggable之二源码解析
- FrameLayout measure过程源码Log全解析之一:源码下载及编译
- FrameLayout measure过程源码Log全解析之五:onMeasure第一部分之MeasureSpec类的bit-mask
- FrameLayout measure过程源码Log全解析之三:onMeasure代码概览
- FrameLayout measure过程源码Log全解析之六:onMeasure第一部分之MeasureSpec类mode和size
- Hadoop学习总结之二:HDFS读写过程解析
- Luncher修改wallpaper(壁纸)源码跟踪(代码实现过程分析)
- Hadoop学习总结之二:HDFS读写过程解析
- opencore parses mpeg4 with mp3 audio track过程中的log输出
- Discuz!NT 代码阅读笔记(8)--DNT的几个分页存储过程解析
- spring IOC源码之解析xml中各个元素的过程
- 动软代码生成器 修改源码 (2010-3-13 更新 修改了DAL 层生成插件和BLL层代码生成插件 )
- ADO.NET Entity Framework 如何:定义具有修改存储过程的模型(实体框架)
- ADO.NET Entity Framework如何:定义具有修改存储过程的模型(实体框架)
- Hadoop学习总结之二:HDFS读写过程解析
- launcher修改--获取应用列表launcher源码解析