adb获取性能数据的常用方法

7 篇文章 1 订阅
1 篇文章 0 订阅

获取包名

def get_package_name(udid):
    pattern = re.compile(r"[a-zA-Z0-9\.]+/.[a-zA-Z0-9\.]+")
    #shell dumpsys window w |findstr \/ |findstr name
    getPackNameCmd = "adb -s" + " " + udid + " " + "shell dumpsys window w |findstr \/ |findstr name="
    print(getPackNameCmd)
    packageText = subprocess.Popen(getPackNameCmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()
    packageInfo = (str(packageText)).split('=')[2]
    packageName = pattern.findall(packageInfo)[0].split('/')[0]
    return packageName

获取活动名


def get_activity_name(udid):
    pattern = re.compile(r"[a-zA-Z0-9\.]+/.[a-zA-Z0-9\.]+")
    getActivityCmd = "adb -s" + " " + udid + " " + "shell dumpsys window w |findstr \/ |findstr name="
    packageText = subprocess.Popen(getActivityCmd, shell=True, stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE).stdout.read()
    packageInfo = (str(packageText)).split('=')[2]
    print("当前包信息", packageInfo)
    activityName = pattern.findall(packageInfo)[0].split('/')[1]
    print("当前活动名", activityName)
    return activityName

获取apk包内存占用情况

# 获取apk包内存占用情况
def mem(udid):
    memCmd = 'adb -s '+ udid + ' shell dumpsys meminfo ' + get_package_name(udid)
    # print("内存命令",memCmd)
    menTextList = subprocess.Popen(memCmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.readlines()
    # print("内存信息",menTextList)
    for memInfo in menTextList:
        if len(memInfo.split())>0 and memInfo.split()[0].decode() == "TOTAL":
            mem = int(memInfo.split()[1].decode())//1024
            print("内存占用",mem, "M")
            # men_list = str(info.split()[1].decode())
    return mem

获取cpu占用率

# 获取cpu占用率
def cpu(udid):
    cpuCmd = 'adb -s ' + udid + ' shell top -n 1| findstr ' + get_package_name(udid)
    print ("cpu占用命令",cpuCmd)
    cpuText = subprocess.Popen(cpuCmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.readlines()
    print("cpu信息", cpuText)
    if len(cpuText) >= 1:
        cpu = str(cpuText[0].split()[4])
        cpu = cpu.split("'")[1]
        print("cpu",cpu)
        # cpu_list.append(int(top_info[0].split()[2][0:-1]))

获取电池温度,剩余电量和实时温度

def gettem(udid):
    # 电池剩余电量和实时温度
    batteryCmd = 'adb -s ' + udid + ' shell "dumpsys  battery | grep "level:""'
    batteryText = subprocess.Popen(batteryCmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()

    batteryTemperatureCmd = 'adb -s ' + udid + ' shell "dumpsys  battery | grep "temperature:""'
    batteryTemperatureText = subprocess.Popen(batteryTemperatureCmd,stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()
    # print("电量信息",batteryText)
    # print("电池温度信息", batteryTemperatureText)
    battery = int(batteryText.split()[1])
    print("剩余电量", battery)

    batteryTemp = int(batteryTemperatureText.split()[1])/10
    print("电池温度",batteryTemp)

    #  cpu温度
    cpuTemperatureText = subprocess.Popen('adb -s ' + udid + ' shell cat /sys/class/thermal/thermal_zone9/temp',
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()
    cpuTemp = int(cpuTemperatureText.split()[0])/1000
    print("cpu温度",cpuTemp)

常用命令

1、获取手机系统信息( CPU,厂商名称等)
adb shell “cat /system/build.prop | grep “product””

2、获取手机系统版本
adb shell getprop ro.build.version.release

3、获取手机系统api版本
adb shell getprop ro.build.version.sdk

4、获取手机设备型号
adb -d shell getprop ro.product.model

5、获取手机厂商名称
adb -d shell getprop ro.product.brand

6、获取手机的序列号
有两种方式

1、 adb get-serialno

2、 adb shell getprop ro.serialno

7、获取手机的IMEI
有三种方式,由于手机和系统的限制,不一定获取到

1、 adb shell dumpsys iphonesubinfo

其中Device ID即为IMEI号

2、 adb shell getprop gsm.baseband.imei

3、 service call iphonesubinfo 1

此种方式,需要自己处理获取的信息得到

8、获取手机mac地址

adb shell cat /sys/class/net/wlan0/address

9、获取手机内存信息
adb shell cat /proc/meminfo

10、获取手机存储信息
adb shell df

获取手机内部存储信息:

魅族手机: adb shell df /mnt/shell/emulated

其他: adb shell df /data

获取sdcard存储信息:

adb shell df /storage/sdcard

11、获取手机分辨率
adb shell “dumpsys window | grep mUnrestrictedScreen”

12、获取手机物理密度
adb shell wm density

adb shell input text

输入一个字符串,只支持英文数字和部分符号
当需要为一个控件输入内容时,需要先保证输入框正片处于焦点

adb shell dumpsys activty | grep -i mSleeping

判断当前屏幕状态

adb shell dumpsys cpuinfo

adb shell top -s cpu

获取手机cpu信息

adb shell am start packageName/className

启动一个Activity

adb shell am broadcast

发送一个广播,使用-a来指定Action,-d指定数据

adb shell am broadcast -a ‘com.icechao.broadcast’
adb shell am am force-stop packageName

强制停止一个应用

adb shell pm clear packageName

清理应用数据

adb shelll kill pid

杀死某个进程

adb logcat -v time -d

打印logcat

adb shell df

文件系统的磁盘空间占用情况

adb shell /system/bin/screencap -p /sdcard/screenshot.png

手机截屏

adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

录制屏幕

adb shell getprop dhcp.wlan0.ipaddress

获取手机ip地址

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq

获取手机Cpu最小频率

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

获取手机Cpu最大频率

cat /sys/devices/system/cpu/cpu0/cpufreq/kernel_max

获取手机cpu核数

adb shell dumpsys window policy | grep mScreenOnFully

获取手机屏幕策略,windows中需要不能使用grep命令筛选信息

adb shell dumpsys window policy | grep mShowingLockscreen

判断当前手机是否是锁屏状态

adb shell svc wifi enable/disable

打开手机wifi,实测部份三星手机不支持些方法
adb shell monkey

能过monkey植入事件为app进行压力测试

grep(命令中 ’ | '到命名结束的部份)命令可以从得到的结果里筛选想要的信息行,这个命令只支持linux 在windows可以考虑使用findstr

在进入手机shell模式后很多通用命令是和linux是一样的,所以可以直接使用linux命令来获取手机的信息

当电脑连接多台手机使用 adb -s 手机序列号 命令 的方式指定手机

adb shell intput swipe left top right bottom

植入屏幕滑动事件
左上为滑动的起始位置,右下为滑动的结束位置
adb shell input swipe 100 200 500 300

adb shell input tap

植入屏幕点击事件,先X轴再Y轴

adb shell input tap 100 200

标题adb进行monkey测试

1、新建一个whitelist的txt文档,里面写上包名将这个文档导入手机的根目录下
2、运行命令monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 200 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 10000 1 >> /mnt/sdcard/Stability_base.txt 2 >> /mnt/sdcard/Stability_base_err.txt
在根目录下就可以看到跑monkey的日志
3、adb shell->ps | grep monkey->kill pid
即可关闭monkey

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值