标签  ”android“  下的文章

使用adb命令获取Android系统信息

经常会碰到要获取Android系统某些信息的情况,尤其是在自动化测试中状态判断时,这时下面这个命令可能会帮到你。

返回结果如下(太多了只截取部分):

通常可以查看到Android系统相关信息或 bluetooth, wlan等状态信息等,具体想知道什么根据自己的需要找就行了。

可以看出,信息读取出来后,是以字典的形式展示的。那么,如果想只获取其中一项数据,只需要知道字典名。就可以以参数方式来获取,比如:

一般情况下,使用getprop获取,那么使用setprop就可以进行修改,但是不建议非开发人员随意修改系统配置信息,个人只是用来做查询判断,使用getprop足以,setprop的用法可以自行百度。

Android平台“后台进程”的理解

    后台进程,应该有两种理解,一种用户的理解,一种是开发的理解。
    区别在于,对用户而言,所有在运行又看不见(界面)的进程都视为后台进程;而对于开发而言,后台进程只有一种,那就是调用了onStop()方法的进程。说这里不得不提一个Processes的生命周期,一个Android进程,一般分以下几种生命形态:
  1. Foreground process
  2. Visible process
  3. Service process
  4. Background process
  5. Empty process
这里面的第4类,就是开发级别的后台进程。

Background process官方说明

A process holding an activity that's not currently visible to the user (the activity's onStop() method has been called). These processes have no direct impact on the user experience, and the system can kill them at any time to reclaim memory for a foreground, visible, or service process. Usually there are many background processes running, so they are kept in an LRU (least recently used) list to ensure that the process with the activity that was most recently seen by the user is the last to be killed. If an activity implements its lifecycle methods correctly, and saves its current state, killing its process will not have a visible effect on the user experience, because when the user navigates back to the activity, the activity restores all of its visible state. See the Activities document for information about saving and restoring state.

    在adb shell am kill-all命令中解释为:Kill all background processes.
    这里指的就是Android 进程生命周期中的后台进程,所以在执行这个命令时,会发现手动切换到后台的进程 ,并不能被kill掉,原因就在此了,虽然被切换到后台,但在Android系统来看,还不算后台进程,在该进程调用onStop()后才会变成真正的Background process,kill-all命令才会对该进程生效。
    解释这个差异的目的在于明确用户与开发因角度不同,可能会在“需求分析”、“功能设计”等方面出现沟通理解上的存在漏洞。
参考文档:
http://developer.android.com/guide/components/processes-and-threads.html
http://developer.android.com/tools/help/shell.html

[Android]使用adb shell查看电池信息

如果想获取有关电池的一些信息,可以直接用adb命令来获取,方便自动化直接调用。
如下命令,通过cat可以获取全部Battery信息:
adb shell cat/sys/class/power_supply/battery/uevent
而且在/sys/class/power_supply/battery/目录中,通过cat可以直接获取相应的信息,如下:

 

一键分析Android的BugReport

在Android系统测试中,经常要抓取log,而内置的BugReport功能无异是最方便全面的。那么问题来了,BugReport包含的信息虽多,但分析起来就成了麻烦,当然觉得麻烦的不只我一个,还有space2。这位前辈为此写了一个名为chkbugreport的开源工具,可以直接把对BugReport进行分析,好吧,我的麻烦被别人解决了。同时受同事启发,把chkbugreport工具做了个强化,实现一键分析BugReport ^_^,非常简单,就是把获取BugReport和分析BugReport一起实现,全当拿Python练练手。

前提:

  1. 已配置java环境
  2. 下载chkbugreport.jar(下载后请名字改成chkbugreport.jar)

方法:

  1. 将下面的代码保存到chkbugreport相同目录
  2. 运行

国际惯例,感谢space2,还有我的同事郑 虹向我推荐chkbugreport。