获取Android手机的内存/CPU信息的方法

 更新时间:2016年9月20日 19:58  点击:1854
有时也会需要获取一下Android手机的内存、CPU信息,获取这些硬件信息主要是用到adb命令工具,以下是本人总结的方法。


偶尔还是要dump一些手机的内存、CPU信息,自己看或者给RD们提供信息,所以对于Android一些基本的adb命令还是要熟悉一下。

查看内存用命令:

1、top
2、ps
3、procrank
4、dumpsys meminfo

四个命令都是shell命令,所以如果直接运行需要adb shell。嵌入程序,如果使用ddmlib来驱动他们,可以使用IDevice.executeShellCommand(command)。

输入这些命令之后,会发现得到的结果是所有进程……一句一句来看是很麻烦的事。所以需要使用一些方法处理一下……

之前讲过android手机的shell是半残,好些有用的命令都不支持,不过这次要用到的grep除外。在以上四个命令后面添加上package Name即可,例如

Procrank com.tencent.mobileqq,即可过滤出来所有包含此字段的数据。

至于为什么有四个命令,是因为他们分工和使用场合不同。

前两个命令只能查到VSS RSS内存占用信息,而后面两个命令可以查出 PSS USS内存占用。
dumpsys meminfo 可以查出native和dalvik分别占用多少内存,dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。

    VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
    USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
    一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

附:

dumpsys [Option]
option可以为:
dumpsysmeminfo 显示内存信息
cpuinfo 显示CPU信息
account 显示accounts信息
activity 显示所有的activities的信息
window 显示键盘,窗口和它们的关系
wifi 显示wifi信息

本文我们来介绍一款Ubuntu系统下的anroid 应用开发工具 Ubuntu Developer Tools。此工具是命令行的开源软件,最新版本为1.0,下面是安装步骤。

Ubuntu Developer Tools 是一款命令行式的开源工具软件,主要用于用户为 android 开发应用软件。目前最新的版本为 Ubuntu Developer Tools Center 0.1 最近已经发布。

本文将教大家如何在 Ubuntu 15.04、14.10、14.04 及衍生版本系统上安装。

Ubuntu 15.04 因为在软件中心已经有最新的 0.1 版本,直接输入以下命令就可以安装了:

sudo apt-get update

sudo apt-get install ubuntu-developer-tools-center

Ubuntu 14.10、14.04 用户使用以下命令,添加 PPA 进行安装:

sudo add-apt-repository ppa:didrocks/ubuntu-developer-tools-center

sudo apt-get update

sudo apt-get install ubuntu-developer-tools-center

Ubuntu Developer Tools Center 成功安装之后,使用以下命令来安装 Android Studio 和 Android SDK:

udtc android

安装 eclipse 软件:

udtc ide eclipse

Android ADT 需要通过 Eclipse 运行:

udtc android eclipse-adt

Espresso是一个API精确,简洁小巧,容易学习的针对APP的UI测试代码的小工具,可以用来测试Android开发,本文我们来介绍一下Espresso及Espresso的安装使用。

Espresso是一个新工具,相对于其他工具,API更加精确。并且规模更小、更简洁并且容易学习。它最初是2013年GTAC大会上推出的,目标是让开发者写出更简洁的针对APP的UI测试代码。

虽然针对的是开发者(Developer),但是对于测试人员来说也是可以用的。因为它有一些Robotiun和Selendroid缺乏的关键特征。

关键特征

1、快速;

2、代码快速上手;

3、容易扩展;

4、无需考虑复杂的多线程测试;

5、有Google做靠山。

Espresso的主要组件

Espresso – 与视图(views)交互的入口,并暴露了一些视图(views)无关的API(例如回退按钮)。

ViewMatchers – 实现匹配器的一组对象。允许可以通过多次的onView方法,在层次图中找到目标视图(views)。

ViewActions – 对视图触发动作(例如点击)。

ViewAssertions – 用于插入测试关键点的一组断言,可用于判断某视图(view)的状态。

例子

onView(withId(R.id.my_view))      // withId(R.id.my_view) 是匹配器
  .perform(click())               // click()事件
  .check(matches(isDisplayed())); // matches(isDisplayed())是断言

对于同样UI的代码复杂性对比

UiAotomator:

UiObject setnum = UiUtil.findByResourceId("android:id/edtno1");
setnum.click();
setnum.setText("10");

Robotium:

EditText txtVal1 = (EditText) solo.getView(R.id.edtno1);
solo.clearEditText(txtVal1);
solo.enterText(txtVal1, "12");

Espresso:

onView(withId(R.id.edtno1)).perform(clearText()).perform(typeText("12"));

可以看出,与其他框架相比,Espresso代码集成度更高,功能分块更加集中:onView用于定位视图,perform用于产生事件,check用于检测checkpoint。

Espresso的使用

setup

1、首先下载Espresso的独立jar包,之后在建立好的Android Test Project里引用这个jar包。

2、在AndroidManifest.xml里包含users-library和instrumentation字段,用于指明测试库和被测目标:

Espresso

3、在项目名称上右键->Run->Run Configurations,把Instrumentation Runner设置为如下:

Espresso

接着点击apply,run就可以开始测试。

可能遇到的问题:

Test run failed: Instrumentation run failed due to ‘java.lang.ClassNotFoundException’”

遇到这个问题,需要在项目->properties,左侧选择Java Build Path,然后在最后一个选项卡Order and Export中勾选espresso的jar包。如下:

Espresso

可以看到,由于espresso是基于Instrumentation的(继承ActivityInstrumentationTestCase2),所以在项目的建立和代码编写上,都与Instrumentation是一脉相承的。

Writing Case

建立的测试项目内容如下,主要实现对默认的hello world字段查找、点击、判断的功能,可以粗略看到espresso的代码结构和执行过程:

public void testHelloWorldTextClicked()
{
  // Find
  ViewInteraction helloWorldText = onView(withText("Hello world!"));
 
  // Action
  helloWorldText.perform(click());
 
  // Check
  helloWorldText.check(ViewAssertions.matches((isDisplayed())));
}

Run Test

开始执行时,底部console区域会输出带有espresso标签的log,同时,安装完apk并开始测试后,会在LogCat中显示内容,方便查看运行状态和调试。

运行结果:

Espresso

同时,由于是基于Instrumentation的,所以也摆脱不了框架本身的限制:

1.无法控制app process以外的activity

2.无法在ui线程进行动画时控制操纵activity

总结

目前,Espresso还处于开发人员预览状态,在Google Code上提供。但思路是,等到它足够成熟和稳定以后,将其迁移到Android SDK中。Google使用Espresso测试了他们自己的超过30个应用程序,包括G+、Maps和Drive。

Android ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备,本文我们来看看widnows和linux下adb找不到设备解决办法。

通常,在安装并配置完android SDK的环境变量之后,成功在命令行(Terminal)输入adb devices之后,并不会立刻看到自己的设备。这里排除掉设备本身驱动的问题,最常见的就是在用户目录下的.android文件夹内没有adb_usb.ini的文件存在。windows和linux环境均如此。

Windows环境

进入C:Users目录,找到自己名字的文件夹,会看到一个.android命名的文件夹(没有则新建一个)。打开之后里面是一些adbkey之类的信息,查找是否存在adb_usb.ini的文件存在,没有则新建。内容是设备的地址,通常为0x1782。
adb_usb.ini文件格式如:

    0x1792
    0x119a

输入并保存即可。

Ubuntu环境

与win类似,只要在当前用户目录下创建创建文件”.android/adb_usb.ini” ,内容为lsusb看到的设备的idVendor。
adb_usb.ini中即每一行加入一个idVendor。

之后执行命令行:
sudo adb kill-server
sudo adb devices

即可看到设备。

BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等。本文我们来介绍一下在Android设备上如何安装BusyBox

由于工作需要,经常要连接手机并用adb进行一些操作,发现shell功能很好用,但是处于阉割状态,最明显的一条是,执行了一些命令之后,目录下出现了一些 -p 、 -l 、 755 之类的文件,让人很是蛋疼。更明显的是,一些linux好用的第三方工具,挪到android下根本无法执行。。于是就想办法让android设备支持全功能的shell。这里最直接的就是安装BusyBox了。

什么是BusyBox

    BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。

如何安装busybox

1、root手机,安装adb

这是必须的!上网搜一下,会有很多对应版本的root教程。adb随意下载并配置一个,命令行敲adb有反应即可。

2、下载最新版的BusyBox

去这里 :busybox.net
最下面有latest,下载一个busybox-armv6l或者busybox-armv7l就可以了

3、安装

如果像我一样,是在windows下安装的,那么可以win+R打开cmd,输入adb。

    adb root
    adb remount

这样进入了root模式,然后把BusyBox的二进制文件push到手机端

    adb push busybox /data/busybox

接着进入shell模式,并安装busybox

    adb shell
    #cd data/busybox
    #./busybox –install

最后一步添加环境变量

    #export PATH=/data/busybox:$PATH

ok,这时候再输入一遍ls看看,是不是跟之前完全不一样了?

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • 浅谈redis key值内存消耗以及性能影响

    这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 详解分析MySQL8.0的内存消耗

    这篇文章主要介绍了详解分析MySQL8.0的内存消耗,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...2021-03-23
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • 解决使用OpenCV中的imread()内存报错问题

    这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20
  • Android判断当前屏幕是全屏还是非全屏

    在安卓开发时我碰到一个问题就是需要实现全屏,但又需要我们来判断出用户是使用了全屏或非全屏了,下面我分别找了两段代码,大家可参考。 先来看一个android屏幕全屏实...2016-09-20