Android 性能测试实践(二) 实时监控工具

简介:

前言

各位 这个工具是本人写的非常简陋体验也非常一般,大家手下留情,不要吐槽!能用上的拿去用吧!

源码:
https://github.com/testly/Tools

这个工具问题估计很多,写的不是很好会有很多手机不支持所以有什么问题可以联系我!我能帮助你的尽力而为!

文件地址
64位!
http://yunpan.cn/cwWLitLZt7IJa 访问密码 2be0

32位!
http://yunpan.cn/cwWL4km7GW6tQ 访问密码 ccd7

工具说明

1,一定要是Root过的Android主流的手机
2,一定要有Adb 环境 (Android Debug Bridge)如果没有的话我文件里面放了

把这个文件夹 路径放到环境变量里面去,Path下面哦
放完后check一下:

这样环境就Ok了

工具的原理

Cpu取值:

adb shell top -n 1| grep"+PackageName

在代码怎么取呢?看下面

publicstaticdoubleCpu(StringPackageName)throwsIOException{doubleCpu=0;try{Runtimeruntime=Runtime.getRuntime();Processproc=runtime.exec("adb shell top -n 1| grep "+PackageName);try{if(proc.waitFor()!=0){System.err.println("exit value = "+proc.exitValue());}BufferedReaderin=newBufferedReader(newInputStreamReader(proc.getInputStream()));StringBufferstringBuffer=newStringBuffer();Stringline=null;while((line=in.readLine())!=null){stringBuffer.append(line+" ");}Stringstr1=stringBuffer.toString();Stringstr3=str1.substring(str1.indexOf(PackageName)-43,str1.indexOf(PackageName));//System.out.println(str3);Stringcpu=str3.substring(0,4);cpu=cpu.trim();Cpu=Double.parseDouble(cpu);}catch(InterruptedExceptione){System.err.println(e);}finally{try{proc.destroy();}catch(Exceptione2){}}}catch(ExceptionStringIndexOutOfBoundsException){System.out.print("请检查设备是否连接");}returnCpu;}

内存取值:

adb shell dumpsys meminfo"+PackageName
publicstaticdoubleGetFlow(StringPackageName)throwsIOException{doublestr3=0;StringPid=PID(PackageName);try{Runtimeruntime=Runtime.getRuntime();/*   Process proc2 = runtime.exec("");*/Processproc=runtime.exec("adb shell cat /proc/"+Pid+"/net/dev");try{if(proc.waitFor()!=0){System.err.println("exit value = "+proc.exitValue());//JOptionPane.showMessageDialog(new JFrame(), "哥们抱歉,好像出问题了!关掉重试吧!");}BufferedReaderin=newBufferedReader(newInputStreamReader(proc.getInputStream()));StringBufferstringBuffer=newStringBuffer();Stringline=null;while((line=in.readLine())!=null){stringBuffer.append(line+" ");}Stringstr1=stringBuffer.toString();Stringstr2=str1.substring(str1.indexOf("wlan0:"),str1.indexOf("wlan0:")+90);//接收字节:Stringstr4=str2.substring(7,16);str4=str4.trim();intb=Integer.parseInt(str4);str3=b/1024;//System.out.println(str3);}catch(InterruptedExceptione){System.err.println(e);}finally{try{proc.destroy();}catch(Exceptione2){}}}catch(ExceptionStringIndexOutOfBoundsException){//System.out.print("请检查设备是否连接");}returnstr3;}

流量取值:

adb shell cat /proc/Pid/net/dev
publicstaticdoubleGetFlow(StringPackageName)throwsIOException{doublestr3=0;StringPid=PID(PackageName);try{Runtimeruntime=Runtime.getRuntime();/*   Process proc2 = runtime.exec("");*/Processproc=runtime.exec("adb shell cat /proc/"+Pid+"/net/dev");try{if(proc.waitFor()!=0){System.err.println("exit value = "+proc.exitValue());//JOptionPane.showMessageDialog(new JFrame(), "哥们抱歉,好像出问题了!关掉重试吧!");}BufferedReaderin=newBufferedReader(newInputStreamReader(proc.getInputStream()));StringBufferstringBuffer=newStringBuffer();Stringline=null;while((line=in.readLine())!=null){stringBuffer.append(line+" ");}Stringstr1=stringBuffer.toString();Stringstr2=str1.substring(str1.indexOf("wlan0:"),str1.indexOf("wlan0:")+90);//接收字节:Stringstr4=str2.substring(7,16);str4=str4.trim();intb=Integer.parseInt(str4);str3=b/1024;//System.out.println(str3);}catch(InterruptedExceptione){System.err.println(e);}finally{try{proc.destroy();}catch(Exceptione2){}}}catch(ExceptionStringIndexOutOfBoundsException){//System.out.print("请检查设备是否连接");}returnstr3;}

取到流量后可以用步骤后的流量减去步骤前的流量得到步骤消耗流量!也可以用时间差来计算!

电量取值:

adb shell dumpsys battery

这里只是剩余电量!

java" style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, 'Courier New', monospace; font-size: 12px; display: block; padding: 5px; margin: 0px 0px 16px; line-height: 1.42857143; color: rgb(68, 68, 68); word-break: break-all; word-wrap: break-word; border: 0px; border-radius: 0px; backgroun
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
10天前
|
移动开发 Java Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第30天】在移动开发领域,随着用户需求的不断增长和设备性能的持续提升,实现流畅且高效的用户体验已成为开发者的首要任务。针对Android平台,Kotlin协程作为一种新兴的异步编程解决方案,以其轻量级线程管理和简洁的代码逻辑受到广泛关注。本文将深入探讨Kotlin协程的概念、优势以及在实际Android应用中的运用,通过实例演示如何利用协程提升应用性能和响应能力,为开发者提供一条构建更高效Android应用的实践路径。
|
1天前
|
缓存 Java Android开发
安卓应用性能优化实践
【5月更文挑战第9天】在移动开发领域,应用的性能是决定用户体验的关键因素之一。特别是对于安卓平台,由于设备的多样性,性能优化变得尤为重要。本文将深入探讨针对安卓应用的性能优化策略,从内存管理、多线程处理到布局优化等方面提供实用的技术建议和最佳实践,帮助开发者提升应用的流畅度与响应速度。
|
2天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
10 0
|
2天前
|
算法 测试技术 开发者
测试驱动开发(TDD)实战:从理论到实践
【5月更文挑战第8天】TDD实战指南:先测试后开发,确保代码质量与可维护性。核心思想是编写测试用例→实现代码→验证→重构。优点包括提高代码质量、促进设计思考和增强可测试性。实战步骤包括编写独立、明确的测试用例,遵循最小可用原则编写代码,运行测试并分析失败原因,以及在验证通过后进行代码重构与优化。通过TDD,开发者能提升编程技能和项目成功率。
|
3天前
|
Java 测试技术 Maven
5个编写技巧,有效提高单元测试实践
本文作者详细讲解了关于单元测试的相关知识,做好单元测试能有效地保障代码质量,本文将手把手教你学会应用单元测试并附有案例、测试插件。
|
3天前
|
Java 测试技术 开发者
卓越工程之单元测试在行权鉴权中的实践
这篇文章着重在“实践”上,是对Java编程技巧之单元测试用例编写流程这篇文章的实际应用,并没有高深的理论和技术。
40 10
|
3天前
|
移动开发 Java Android开发
Android应用开发:Kotlin语言的优势与实践
【5月更文挑战第7天】 在移动开发的世界中,Android平台的Kotlin语言以其高效、简洁的语法和强大的功能吸引了众多开发者。本文将深入探讨Kotlin语言的核心优势,并通过实际案例展示如何在Android应用开发中有效地运用这一现代编程语言。我们将从语言特性出发,逐步分析其在提升开发效率、改善代码质量以及增强应用性能方面的具体表现,为读者提供一个全面而细致的Kotlin应用开发指南。
|
4天前
|
测试技术 API
探索软件测试中的自动化工具与挑战
本文探讨了软件测试领域中自动化工具的应用与挑战。通过分析目前主流的自动化测试工具,探讨了其在提高测试效率、减少人工成本、增强测试覆盖率等方面的优势。然而,自动化测试也面临着诸如脆弱性、维护成本高等挑战。最后,提出了一些应对挑战的建议,以期为软件测试领域的自动化工作提供一些启示。
11 1
|
4天前
|
Java Android开发
Android 反编译工具的使用
Android 反编译工具的使用
12 0
|
4天前
|
Web App开发 JSON 前端开发
我理解的测试开发与实践总结——新人篇
本文以作者的视角,讲述了测试与开发、产品之间的关系,如何做好一个测试以及做好一个测试应当具有的素质与技能。