跟ChatGPT学习go语言-利用Go语言封装一个adb命令函数

问:在go语言中,根据不同的操作系统,选择adb文件路径来进行执行,封装成一个函数

package mainimport ("fmt""os/exec""runtime"
)// GetADBPath 根据操作系统获取 ADB 可执行文件的路径
func GetADBPath() string {switch runtime.GOOS {case "windows":return "path/to/adb.exe" // 替换为实际的 ADB 路径case "darwin":return "/path/to/adb" // 替换为实际的 ADB 路径case "linux":return "/path/to/adb" // 替换为实际的 ADB 路径default:return "adb" // 默认情况下,假设 ADB 在 PATH}
}// ExecuteADBCommand 执行 ADB 命令并返回输出结果或错误
func ExecuteADBCommand(args ...string) (string, error) {adbPath := GetADBPath()cmd := exec.Command(adbPath, args...)output, err := cmd.CombinedOutput()return string(output), err
}func main() {// 示例:获取连接的设备列表output, err := ExecuteADBCommand("devices")if err != nil {fmt.Printf("Error executing adb command: %v\n", err)return}fmt.Println("Connected devices:\n", output)// 示例:获取设备的电池状态(假设有设备连接)output, err = ExecuteADBCommand("shell", "dumpsys", "battery")if err != nil {fmt.Printf("Error executing adb command: %v\n", err)return}fmt.Println("Battery status:\n", output)
}

解释

导入所需包:

fmt:用于格式化输出。
os/exec:用于执行外部命令。
runtime:用于检测操作系统类型。

GetADBPath 方法:

GetADBPath 函数根据操作系统类型返回对应的 ADB 可执行文件路径。
使用 runtime.GOOS 检测操作系统类型。
根据不同的操作系统返回不同的 ADB 路径。

封装 ExecuteADBCommand 方法:

ExecuteADBCommand 函数调用 GetADBPath 获取 ADB 路径。
使用 exec.Command 创建一个 adb 命令,并传递参数。
使用 CombinedOutput 方法执行命令,并获取输出结果(包括标准输出和标准错误)。
返回输出结果和可能的错误。

示例使用:

在 main 函数中,调用 ExecuteADBCommand 方法获取连接的设备列表。
打印输出结果或错误信息。
示例中还展示了如何获取设备的电池状态。

注意事项

确保在 GetADBPath 函数中替换为实际的 ADB 路径。
确保你的环境中已经安装了 ADB,并且 ADB 命令可以在终端中全局执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker搭建普罗米修斯监控gpu

ip8的服务器监控ip110和ip111的服务器 被监控的服务器110和111只需要安装node-export和nvidia-container-toolkit 下载镜像包 docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana新建目录 mkdir /opt/prometheus cd /opt/prometheus/…

生信软件27 - 基于python的基因注释数据查询/检索库mygene

1. mygene库简介 MyGene.info提供简单易用的REST Web服务来查询/检索基因注释数据,具有以下特点: mygene技术文档: https://docs.mygene.info/en/latest/ 多物种支持: 包括人、小鼠、大鼠、斑马鱼等多个模式生物; 多数据源聚合…

卷积神经网络图像识别车辆类型

卷积神经网络图像识别车辆类型 1、图像 自行车: 汽车: 摩托车: 2、数据集目录 3、流程 1、获取数据,把图像转成矩阵,并随机划分训练集、测试集 2、把标签转为数值,将标签向量转换为二值矩阵 3、图像数据归一化,0-1之间的值 4、构造卷积神经网络 5、设置图像输入…

记录些MySQL题集(8)

ACID原则、事务隔离级别及事务机制原理 一、事务的ACID原则 什么是事务呢?事务通常是由一个或一组SQL组成的,组成一个事务的SQL一般都是一个业务操作,例如聊到的下单:「扣库存数量、增加订单详情记录、插入物流信息」&#xff0…

Qt5.12.2安装教程

文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置,添加临时储存库,复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试&#xff0…

谷歌搜索引擎:知识殿堂与全球网络连通的桥梁

谷歌搜索引擎,其标志性的名称已成为互联网的象征。每次启动电脑,我总会习惯性地在洁白的搜索框内输入疑惑。谷歌如同一位博学多才的朋友,总能迅捷地提供满意解答。其界面设计简约明快,仅有标志性的彩色"Google"字样与搜…

HDFS和ES

HDFS(Hadoop Distributed File System)和 Elasticsearch(ES)是两种不同类型的分布式系统,分别用于存储和搜索数据。它们在设计目标、架构、使用场景等方面有显著的区别。以下是对 HDFS 和 ES 的详细比较: …

孟德尔随机化——混杂SNP剔除之LDlink(1)

1、注册:LDlink | An Interactive Web Tool for Exploring Linkage Disequilibrium in Population Groups 邮箱会收到12个字符串的token,使用时需要提供token 2、包内方法 LDexpress Determine if genomic variants are associated with gene express…

352_C++_管理用户登录计数器的类,其中有定时器m_timer操作,定时修改【登录锁定时间】和【错误次数】

~~ 头文件 #pragma once#include "commonfunction.h" #include <boost/asio/steady_timer.hpp> #include <set> #include

第13章 更多的结构化命令《Linux命令行与Shell脚本编程大全笔记》

13.1 For命令 格式&#xff1a;for var in list;dofor命令默认按照空格、制表符、换行符作为字段分隔符区分单个值&#xff0c;如果某个值含有空格要使用双引号从命令中读取值列表for state in $(cat $file)更改字段分隔符IFS(internal field separator)IFS$\n可能的需求&…

set类和map类介绍和简单使用

目录 set类介绍与简单使用 set类 multiset类 map类介绍与简单使用 map类 multimap类 set类介绍与简单使用 set类是一种关联式容器&#xff0c;在数据检索时比序列式容器效率更高。本质是一个常规的二叉搜索树&#xff0c;但是为了防止出现单支树导致效率下降进行了相关优…

【Linux】将IDEA项目部署到云服务器上,让其成为后台进程(保姆级教学,满满的干货~~)

目录 部署项目到云服务器什么是部署一、 创建MySQL数据库二、 修改idea配置项三、 数据打包四、 部署云服务器五、开放端口号六 、 验证程序 部署项目到云服务器 什么是部署 ⼯作中涉及到的"环境" 开发环境:开发⼈员写代码⽤的机器.测试环境:测试⼈员测试程序使⽤…

SQL面试题-留存率计算

表定义&#xff1a; create table if not exists liuliang_detail (user_id string comment ,record_time string comment yyyymmdd hh:mi:ss ) comment 流量明细表 ; 方法一&#xff1a; 计算的是整段时间范围内&#xff0c;每一天为基准的所有的留存1、2、7天的用户数。 …

WEB前端05-JavaScrip基本对象

JavaScript对象 1.Function对象 函数的创建 //方法一&#xff1a;自定义函数 function 函数名([参数]) {函数体[return 表达式] }//方法二&#xff1a;匿名函数 (function([参数]) {函数体[return 表达式] }); **使用场景一&#xff1a;定义后直接调用使用(只使用一次) (fun…

GitHub每日最火火火项目(7.17)

项目名称&#xff1a;aider 项目介绍&#xff1a;aider 是一个在终端中实现 AI 结对编程的项目。它能够为开发者提供智能的编程辅助&#xff0c;帮助开发者更高效地完成编程任务。通过与 AI 的协作&#xff0c;开发者可以获得实时的代码建议、错误修复提示等&#xff0c;从而提…

成为git砖家(1): author 和 committer 的区别

大家好&#xff0c;我是白鱼。一直对 git author 和 committer 不太了解&#xff0c; 今天通过 cherry-pick 的例子搞清楚了区别。 原理 例如我克隆了著名开源项目 spdlog 的源码&#xff0c; 根据某个历史 commit A 创建了分支&#xff0c; 然后 cherry-pick 了这个 commit …

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-06-云计算(Cloud Computing) 技术概述

文章目录 1. 相关概念2. 云计算的服务方式2.1 软件即服务 (SaaS)2.2 平台即服务 (PaaS)2.3 基础设施即服务 (IaaS)2.4 三种服务方式的分析2.4.1 在灵活性2.4.2 方便性方 3. 云计算的部署模式3.1 公有云3.2 社区云3.3 私有云3.4 混合云 4. 云计算的发展历程4.1 虚拟化技术4.2 分…

重塑政府服务:互联网软件与政府系统的创新融合

在数字化转型的浪潮中&#xff0c;政府服务正经历着前所未有的变革。互联网软件的快速发展为政府系统带来了前所未有的机遇&#xff0c;两者之间的创新融合正逐步重塑政府服务的面貌&#xff0c;使公共服务更加高效、便捷、个性化。 一、技术赋能&#xff0c;提升服务效率 互…

python课设——宾馆管理系统

python课设——宾馆管理系统 数据库课设-宾馆管理系统-python3.7pyqt5 简介 大二数据库课程设计&#xff08;3-4天工作量&#xff09;的项目&#xff0c;登录界面的ui设计参考了他人成果&#xff0c;其余ui以及所有后端部分全部独立完成&#xff0c;详细功能见功能模块图使用…

防火墙NAT地址转换和智能选举综合实验

一、实验拓扑 目录 一、实验拓扑 二、实验要求&#xff08;接上一个实验要求后&#xff09; 三、实验步骤 3.1办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 3.2分公司设备可以通过总公司的移动链路和电信链路访…