用adb命令组装PowerShell实用小工具——Android小助手

简介: [本文出自天外归云的博客园] 前置工作 1. 需要安装adb; 2. 需要本机设置PowerShell脚本运行策略。 脚本示例 PowerShell例子如下: Function GetPkgAndActName(){ #运行脚本前确保app处于激活状态 $a = ...

[本文出自天外归云的博客园]

前置工作

1. 需要安装adb

2. 需要本机设置PowerShell脚本运行策略

脚本示例

PowerShell例子如下:

Function GetPkgAndActName(){
    #运行脚本前确保app处于激活状态
    $a = adb shell dumpsys window windows|findstr Focu;
    $b = $a -like "*mCurrentFocus*";
    $b = $b.Trim();
    $startIndex = $b.IndexOf("{");
    $endIndex = $b.IndexOf("}");
    $pkgAndActName = (($b.Substring($startIndex+1,$endIndex-$startIndex-1)).split(" "))[2];
    return $pkgAndActName
}
Function GetCurrFlow(){
    #运行脚本前确保app处于激活状态
    $pkgAndActName = GetPkgAndActName;
    $pkgName = ($pkgAndActName.split("/"))[0];
    $activityName = ($pkgAndActName.split("/"))[1];
    $userId = (((((adb shell dumpsys package $pkgName | findstr userId).Trim()).split("="))[1]).split(" "))[0]
    $rets = adb shell cat /proc/net/xt_qtaguid/stats | findstr $userId
    foreach ($ret in $rets)
    {
        $spices = ($ret.Split(" "))
        $flow += [int]$spices[5]+[int]$spices[7]
    }
    $flow/1000
}
function Convert-Size {            
    [cmdletbinding()]            
    param(            
        [validateset("Bytes","KB","MB","GB","TB")]            
        [string]$From,            
        [validateset("Bytes","KB","MB","GB","TB")]            
        [string]$To,            
        [Parameter(Mandatory=$true)]            
        [double]$Value,            
        [int]$Precision = 4            
    )            
    switch($From) {            
        "Bytes" {$value = $Value }            
        "KB" {$value = $Value * 1024 }            
        "MB" {$value = $Value * 1024 * 1024}            
        "GB" {$value = $Value * 1024 * 1024 * 1024}            
        "TB" {$value = $Value * 1024 * 1024 * 1024 * 1024}            
    }              
    switch ($To) {            
        "Bytes" {return $value}            
        "KB" {$Value = $Value/1KB}            
        "MB" {$Value = $Value/1MB}            
        "GB" {$Value = $Value/1GB}            
        "TB" {$Value = $Value/1TB}            
            
    }                 
    return [Math]::Round($value,$Precision,[MidPointRounding]::AwayFromZero)        
}  
while($true){
    Write-Host "输入数字进行选择" -ForegroundColor Green
    Write-Host "1 唤醒屏幕" -ForegroundColor Yellow
    Write-Host "2 输入文字" -ForegroundColor Yellow
    Write-Host "3 触发事件" -ForegroundColor Yellow
    Write-Host "4 向上滑动" -ForegroundColor Yellow
    Write-Host "5 向下滑动" -ForegroundColor Yellow
    Write-Host "6 向左滑动" -ForegroundColor Yellow
    Write-Host "7 向右滑动" -ForegroundColor Yellow
    Write-Host "8 删除输入" -ForegroundColor Yellow
    Write-Host "9 屏幕截图" -ForegroundColor Yellow
    Write-Host "10 获取手机分辨率" -ForegroundColor Yellow
    Write-Host "11 获取手机系统版本" -ForegroundColor Yellow
    Write-Host "12 获取当前app包名和活动名(运行脚本前确保app处于激活状态)" -ForegroundColor Yellow
    Write-Host "13 流量统计(运行脚本前确保app处于激活状态)" -ForegroundColor Yellow
    Write-Host "14 进行简单monkey测试" -ForegroundColor Yellow
    $choice = Read-Host "请选择"
    switch($choice)
    {
        1{adb shell input keyevent 26}
        2{$text = Read-Host "输入文字";adb shell input text $text}
        3{$event = Read-Host "输入事件代号";adb shell input keyevent $event}
        4{adb shell input swipe 200 800 200 100}
        5{adb shell input swipe 200 100 200 800}
        6{adb shell input swipe 500 100 100 100}
        7{adb shell input swipe 100 100 500 100}
        8{
            [int]$amount = Read-Host "输入要删除的字符数量";
            for($i=0;$i -lt $amount;$i++)
            { 
                adb shell input keyevent 67;
            }
        }
        9{
            $result = adb devices;
            $device_id = $result[1].Split()[0];
            adb -s $device_id shell /system/bin/screencap -p /sdcard/screenshot.png;
            adb -s $device_id pull /sdcard/screenshot.png d:/screenshot.png;
            D:\screenshot.png
        }
        10{adb shell wm size}
        11{adb shell getprop ro.build.version.release}
        12{
            $pkgAndActName = GetPkgAndActName;
            $pkgName = ($pkgAndActName.split("/"))[0];
            $activityName = ($pkgAndActName.split("/"))[1];
            "包名:"+$pkgName;
            "活动名:"+$activityName;
        }
        13{
            Read-Host "按任意键开始统计";
            $startFlow = GetCurrFlow;
            Write-Host "流量监控中……`n" -ForegroundColor DarkMagenta;
            Read-Host "按任意键结束统计";
            $endFlow = GetCurrFlow;
            $consumedFlow = [int]$endFlow-[int]$startFlow
            $consumedFlowKb = Convert-Size -From KB -To KB -Value $consumedFlow
            $consumedFlowMb = Convert-Size -From KB -To MB -Value $consumedFlow
            "共消耗流量:"+$consumedFlowKb+"kb("+$consumedFlowMb+"mb)";
        }
        14{
            $count = Read-Host "请指定随机事件数"
            $pkgAndActName = GetPkgAndActName;
            $pkgName = ($pkgAndActName.split("/"))[0];
            adb shell monkey -p $pkgName -v $count;
        }
    }
}

可以根据实际测试过程中反复手点的过程进行组装调配。比如在反复测试登录的情况下,就要反复输入密码,如果来回用手点就比较麻烦,用这个小工具的话就非常轻松了,按一下上再敲一下回车就搞定了。以下是进行统计指定时间内android应用流量的消耗:

退出:ctrl+c

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
6月前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
2559 1
|
6月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
745 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
6月前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
700 8
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
475 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
7月前
|
存储 人工智能 前端开发
​​LangChain默认工具正在污染你的知识库!PDF解析崩溃真相​
本文深入探讨RAG项目中PDF解析的痛点与解决方案,分析LangChain默认工具的局限性,提出专业级文档处理架构设计与工具选型策略,涵盖表格图像处理、多模态解析与可扩展管道实现,助力提升RAG系统效果。
612 6
|
8月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
1025 4
|
JSON 数据格式
【Azure Fabric Service】演示使用PowerShell命令部署SF应用程序(.NET)
本文详细介绍了在中国区微软云Azure上使用Service Fabrics服务时,通过PowerShell命令发布.NET应用的全过程。由于Visual Studio 2022无法直接发布应用,需借助PowerShell脚本完成部署。文章分三步讲解:首先在Visual Studio 2022中打包应用部署包,其次连接SF集群并上传部署包,最后注册应用类型、创建实例并启动服务。过程中涉及关键参数如服务器证书指纹和服务端证书指纹的获取,并附带图文说明,便于操作。参考官方文档,帮助用户成功部署并运行服务。
373 74
|
9月前
|
Android开发
安卓硬改一键新机工具,一键修改手机型号,串号网卡Imei、sn码【仅供学习参考】
声明部分:仅供学习参考使用,基于Xposed框架实现的设备信息伪装模块的完整代码,包含多个功能模块:
|
9月前
|
编解码 自然语言处理 Java
安卓改机工具免root,一键过设备检测,串号SN码【jar即可实现】
本项目通过Hook系统API实现设备信息的拦截与修改,主要功能包括动态更改IMEI/SN等设备标识。核心技术基于Xposed框架(免Root可用VirtualXposed)
|
8月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能

热门文章

最新文章