Android日志系统详解
How to debug with Android logging
怎么抓取Android日志文件
Android logging system为logging系统提供了一个Java类android.util.Log,也提供了一个c/c++的log库,在kernel中有四个设备节点,详细见:Android日志系统详解。其系统架构如下:
此图与4.0以上的系统有些差异,新版Android增加了log_system
Android日志系统详解
How to debug with Android logging
怎么抓取Android日志文件
Android logging system为logging系统提供了一个Java类android.util.Log,也提供了一个c/c++的log库,在kernel中有四个设备节点,详细见:Android日志系统详解。其系统架构如下:
此图与4.0以上的系统有些差异,新版Android增加了log_system
Android日志系统详解
How to debug with Android logging
怎么抓取Android日志文件
不管是做Android应用还是做Android中间层和底层,Logging系统都是必须要了解的;因为Android不像单片机程序UCOS那么简单,可以很方便的单步调试。所以,就准备用一篇blog来分析一下logging system。
##概览
Android提供了一个灵活的logging系统,允许应用程序和系统组件等整个系统记录logging信息,它是独立于Linux Kernel的一个logging系统,kernel是通过”pr_info”、”printk”等存储,通过“dmesg”或“cat /proc/kmsg”获取。不过,Android logging 系统也是将信息存在内核缓存区。其结构如下:
Android编译过程详解之一
Android编译过程详解之二
Android编译过程详解之三
Android.mk解析
前两个篇基本完全涉及到了整个编译过程,接下来着重分析一下和公司产品相关的mk文件。有两个路径前面没有怎么提到过,如下:
1 | build/target/product # 当前产品配置的mk文件,如:需要包含哪些apk在此产品中 |
除以上两个路径外,对产品定义的文件通常位于device目录下,还可以定义在vender目录下(不过Google已不建议如此做了),device目录下根据公司名和产品名分为两级目录,这个上文已经介绍过。通常一个产品定义如下四个文件:
Android编译过程详解之一
Android编译过程详解之二
Android编译过程详解之三
Android.mk解析
配置好环境变量后,接下来要做的就是build了。为了提高编译速度,我们自定义了一个go.sh的脚本文件,详细下面解释。另,编译的时候一般会在后面加一个-j8来实现多线程编译,如:
1 | ./go.sh -j8 or make -j8/--jobs |
参数“-j“ 和”–jobs ”指定了同时编译的线程数量,通常是编译主机 CPU 支持的并发线程总数的 1 倍或 2 倍(如:在一个 4 核,每个核支持两个线程的 CPU 上,可以使用 make -j8 或 make -j16)。在调用 make 命令时,如果没有指定任何目标,则将编译默认目标“droid”(下面详解),然后将会编译出完整的 Android 系统镜像。
整个build系统的Make文件可以分为三类:
所有的编译产物都将位于 /out 目录下,该目录下主要有以下几个子目录:
Android编译过程详解之一
Android编译过程详解之二
Android编译过程详解之三
Android.mk解析
最近将Android从4.4移植到5.1时,添加一个从拨号界面输入*#360*#进入battery info查看界面的功能时(如感兴趣,详情见Android电池监控系统(bms)之一电池系统架构),activity跳转部分代码如下:
1 | else if(input.equals(BATTERY_INFO)) |
遇到如下问题:
1 | ActivityNotFoundException : Unable to find explicit activity class; have you declared this activity in your AndroidManifest.xml? |
** Platform Information :
System: Android4.4.4
Platform: Qualcomm msm8916
Author: Andy Lee
Email: huaqianlee@gmail.com**
欢迎指出错误,共同学习,共同进步
Android编译过程详解之一
Android编译过程详解之二
Android编译过程详解之三
Android.mk解析
Google给出的编译环境和构建方法见:http://source.android.com/source/initializing.html,过程见:http://source.android.com/source/building.html,不过这是解释怎么编译一个通用的系统,没有详细描述细节,而且需要翻墙。接下来我就准备跟着高通平台的编译过程来详细了解一下。
我平时的编译步骤如下:
1. source setup.sh project-name debug/release 加载命令配置环境
2. ./go.sh [target] or make [target] 编译
1 | <3>[52515.763039] __smb135x_write: Writing 0x41=0x06 |
1 | static struct i2c_driver smb135x_charger_driver = { |
1 | # 注册驱动: |
Git是Linux撞始人Linus Towards花一周写出来的分布式版本控制系统,大神终究是大神,这么牛逼的东西只需要一周。之前花了一百多刀买了Linus的原版自传《Just for fun》,基本上是他自己写的,很幽默,有兴趣可以看看。Linus很傲,但是傲得有资本,唯一能无视Jobs的现实扭曲力场,对Jobs的盛情邀请say no转身而去的人。
言归正传,Git十分好用,应用也十分广泛,现在最好的代码托管网站Github就是基于git创建的,而且现在大多数公司及个人都在使用它进行代码管理,要熟练使用还是需要花一些苦功夫的,我现在也还只是会基本的应用,更深层次的使用还不熟悉。为了方便自己以后使用,将自己常用的一些命令加以总结,并Google了一些常用及进阶命令,一并列出,方便查询使用。
最重要的命令: git