Autojs基础-Shell命令(shell)
1.前言autojs的shell命令类似于adb执行“adb shell”命令就是将adb命令中的前缀“adb shell”去掉后缀部分通过autojs给出的方式执行。当然shell命令执行需要在root环境下才能生效。autojs对adb shell命令大多数情况是支持的但涉及内存信息获取或者操作部分的shell命令是无法执行的这种命令既不报错也不会返回信息。2.函数1.概况autojs给出了两种执行shell命令的方式第一种是直接调用shell函数另一种是构建一个Shell对象再调用对象的函数。我们使用第一种方式时一般会以root权限的方式运行这种方式每次都会自动创建个shell对象运行方式采用同步运行执行速度相对较慢但是权限较高我们使用第二种方式时会先手动创建个包含root权限的shell对象然后调用这个对象的函数来执行shelll命令我们在整个代码可以创建一个shell对象运行方式采用异步运行这种方式执行速度相对较快但是权限较低。一般情况下我们可以在代码开始构建一个shell对象然后通过这个对象来执行命令当shell对象由于权限不够而无法使命令生效时再通过直接调用shell函数的方式执行。但是下面的使用场景中也介绍了两种方式的使用情况可以按照这个使用场景进行使用。2.shell函数用于执行shell命令需要传递两个参数分别为命令和是否以root权限运行默认为false参数类型分别为字符串和boolean返回执行结果返回类型为对象。执行结果对象属性有code、result和error分别表示返回码、运行结果和运行错误信息。其中code为0时表示运行成功不为0时代表运行失败。以“adb shell pm list packages”命令为例怎么在autojs中执行这个命令。我前面介绍了很多关于root权限才能使用的函数我的autojs早已经获取了root权限忽略了这个情况。我下面代码会把我认为比较好用获取root权限方式告诉大家。如果使用root权限的功能获取root权限代码一般放在脚本开头。但是学习阶段防止代码干扰之后不再介绍获取root权限的功能。这是电脑cmd中调用adb shell命令查看雷电模拟器应用信息的情况大家会发现每次执行abd shell命令都会重启adb因为我电脑上拥有adb的应用Android Studio、按键精灵手机助手、雷电模拟器4、雷电模拟器9太多了出现这种情况主要是abd版本冲突导致的。幸好不影响功能我这里就处理了大家知道就好了。在autojs可以通过以下方式获取root权限和执行shell命令。// 获取root权限 if (!hasRootAccess()) { toast(请开启Root权限); // 如果请求root权限失败 if (!requestRoot()) { // 清理缓存退出脚本 // 由于这是学习阶段没有缓存就直接退出了 exit(); } } let result shell(pm list packages, true); // 如果执行成功 if (result.code 0) { console.log(执行shell命令成功); console.log(result.result); } else { console.log(执行shell命令失败); console.log(result.error); } // 检查是否有Root权限 function hasRootAccess() { let result shell(id, true).result; // 执行Linux系统命令 return (result.indexOf(uid0) 0); // uid0表示Root用户 } // 请求Root权限 function requestRoot() { let sh new Shell(true); // 创建交互式Shell sh.exec(su); // 发送Root权限请求 // 等待用户手动授权弹出系统授权弹窗 sleep(5000); // 留出5秒操作时间 if (hasRootAccess()) { toast(Root权限已获取); return true; } else { toast(Root权限请求失败); return false; } }3.Shell对象Shell对象构造函数允许传递一个是否以root权限运行默认为false一个参数参数类型为boolean我们一般会以root权限创建对象返回shell对象。返回shell对象的函数有exec、exit、exitAndWaitFor和setCallback分别用于执行shell命令、退出shell命令、等待命令运行结束和运行回调。exec函数用于执行shell命令需要传递命令一个参数参数类型为字符串这个函数无返回值如果想获取返回数据需要通过setCallback回调函数。exit函数用于退出命令运行正在运行的命令也会终止一般出现特殊情况下才会调用这个函数正常结束的函数可以不调用这个函数。exitAndWaitFor函数用于等待命令运行结束通过exec函数运行方式是异步运行的需要调用这个函数保证命令执行完成避免后面代码提前运行而导致出错。setCallback函数用于获取运行过程中的数据包含onOutput和onNewLine两个函数onOutput函数每次返回数据加载完成都会调用一次onNewLine函数每次返回数据加载一行都会调用一次。实际上通过回调的方式获取返回数据非常不友好会包含大量干扰信息最终导致onOutput函数会获取各种空信息和结束信息以及onNewLine函数获取多行数据才调用一次和获取onOutput函数类似的无用信息。let currentShell new Shell(true); // 执行shell命令 currentShell.exec(pm list packages); // 保存通过新行拼接的字符串 let lineString; // 保存通过新内容拼接的字符串 let contentString; // 执行回调函数 currentShell.setCallback({ onNewLine: function (line) { console.log(新行 line); }, onOutput: function (content) { console.log(新内容 content); } }) // 等待命令运行结束 currentShell.exitAndWaitFor(); // 退出命令行 currentShell.exit();4.使用场景通过上面的比较可以发现Shell对象执行命令的方式局限性还是很大的但是这种能够共用一个对象执行速度快也是一个优点。我给出几个常用的场景如果想快速执行shell命令并且能够保证命令成功执行可以使用Shell对象的方式如果需要获取返回信息无法保证执行命令的正确性或者需要很高的执行权限可以使用shell函数的方式。3.命令官方文档介绍了很多命令我就不一一介绍了。这些命令并不是包含所有adb shell命令而且找起来很不方便。一般我需要哪个功能的adb shell就会通过AI搜索一下然后通过autojs使用。这些命令不如函数一样方便查找可以通过用到啥搜索啥的方式然后直接使用和调试。我目前没有遇到命令不能执行的情况除了查询和操作内存信息的时候。我们一般情况下很少使用adb shell的方式完成某个功能当我们有特殊需求时可以使用。

相关新闻

使用Zerynth在索尼Spresense上以Python获取GNSS数据

使用Zerynth在索尼Spresense上以Python获取GNSS数据

1. 项目缘起:当索尼Spresense遇上Python,GNSS数据获取的轻量化之路 最近在折腾一个户外数据采集的小项目,核心需求是能实时获取高精度的地理位置信息。市面上常见的方案要么是集成度高的成品模块,价格不菲且二次开发受限&#xff…

2026/8/21 2:14:38 阅读更多 →
基于ESP32与WS2812B的MacBook发光Logo改造全流程解析

基于ESP32与WS2812B的MacBook发光Logo改造全流程解析

1. 项目概述:让苹果Logo“呼吸”的创意之光几年前,当苹果公司决定在新一代MacBook上取消那个经典的、会发光的Logo时,不少老用户都感到一丝惋惜。那个背光苹果标志,曾经是咖啡馆里、图书馆中一道独特的风景线,是身份与…

2026/8/19 21:17:58 阅读更多 →
Arduino驱动OLED显示屏全攻略:从硬件连接到图形界面开发

Arduino驱动OLED显示屏全攻略:从硬件连接到图形界面开发

1. 项目概述:当Arduino遇见OLED 如果你玩过Arduino,大概率会从点亮一个LED灯开始,然后可能是控制舵机、读取传感器。但当你觉得串口监视器里滚动的数字和字符不够直观、不够“酷”时,一个显示设备就成了刚需。这时候,O…

2026/8/19 21:17:57 阅读更多 →

最新新闻

大数据招聘分析系统:Scrapy+Flask技术实现与应用

大数据招聘分析系统:Scrapy+Flask技术实现与应用

1. 项目概述:大数据招聘岗位分析系统的价值与定位 这个毕业设计项目瞄准了当前就业市场的核心痛点——信息不对称。每年有超过80%的应届生在求职时面临"不知道企业真正需要什么技能"的困境,而HR也常抱怨收到的简历与岗位要求匹配度低。我们团队…

2026/8/21 3:00:08 阅读更多 →
动画拆解手动变速箱原理:从齿轮啮合到同步器工作全解析

动画拆解手动变速箱原理:从齿轮啮合到同步器工作全解析

这次我们来看一个用动画形式讲解手动变速箱工作原理的技术内容。对于机械工程、汽车专业的学生,或是汽车维修、机械设计领域的从业者来说,理解手动变速箱的内部结构和工作过程是基础中的基础。纯文字和静态图往往不够直观,而动态演示则能清晰…

2026/8/21 3:00:08 阅读更多 →
床车露营入门指南:从车辆评估到系统搭建的完整解决方案

床车露营入门指南:从车辆评估到系统搭建的完整解决方案

1. 这篇文章真正要解决的问题如果你正在计划一次长途自驾,或者厌倦了千篇一律的酒店和民宿,想体验更自由、更贴近自然的旅行方式,那么“床车露营”这个概念一定不止一次地出现在你的搜索列表里。然而,当你真正开始研究时&#xff…

2026/8/21 3:00:08 阅读更多 →
永久免费云电脑深度解析:技术原理、实战部署与避坑指南

永久免费云电脑深度解析:技术原理、实战部署与避坑指南

永久免费云电脑,真的不收费?深度拆解与实战避坑指南 最近,关于“永久免费云电脑”的话题在开发者圈里又火了起来。很多朋友看到“免费”、“永久”、“白嫖”这些字眼就心动了,想着是不是能省下一台实体电脑的钱,或者…

2026/8/21 3:00:08 阅读更多 →
告别臃肿右键菜单:ContextMenuManager 右键菜单管理完整指南

告别臃肿右键菜单:ContextMenuManager 右键菜单管理完整指南

告别臃肿右键菜单:ContextMenuManager 右键菜单管理完整指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 上周帮朋友远程修电脑,他委屈…

2026/8/21 3:00:08 阅读更多 →
数据中心机房配电系统全流程避坑指南:从规划到运维的核心要点

数据中心机房配电系统全流程避坑指南:从规划到运维的核心要点

最近在协助一个中小型数据中心进行机房配电系统升级改造时,深刻体会到“电”是机房的生命线,一个看似不起眼的配电设计疏漏,就可能导致服务器宕机、数据丢失甚至设备损毁的重大事故。网上关于PDU、UPS、列头柜的资料虽然多,但大多…

2026/8/21 2:59:08 阅读更多 →

日新闻

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

前言随着国家数字基础设施信创替代、关键技术自主可控战略持续深化,口岸智慧安防、边检智能管控领域正全面进入国产化、自主化、安全可控升级周期。当前国内机场边检旅客识别与定位体系长期依赖国外商用视觉算法、进口成像硬件、闭源通用计算平台,存在核…

2026/8/21 0:00:42 阅读更多 →
别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱当下数字化建设浪潮中,很多项目将三维可视化、视频贴图叠加的数字孪生等同于空间智能。传统数字孪生更多停留在三维场景复刻,擅长把物理世界“画出来、展示出来”,…

2026/8/21 0:00:42 阅读更多 →
105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40C到85C的影像质量一致性——ISP参数温漂补偿与产线标定策略 去年冬天在北方某车厂做A样评审,凌晨四点的黑河试验场,零下三十三度。客户拿了一台冷启动的车,中控屏上倒车影像全是雪花噪点,暗部细节直接糊成一片。我第一反应是sensor温度没上来,暗电流…

2026/8/21 0:00:42 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 0:02:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/20 21:46:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/21 0:14:22 阅读更多 →