【Andriod】adb调试安卓手机时连接真机或模拟器的3种方法,你知道么?

一.adb是什么?

adb 称之为:Android 调试桥 (Android Debug Bridge )是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。
- 可以在Android SDK/platform-tools中找到adb 工具或下载 ADB Kits

注: 有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。

二.adb有什么作用?

ADB 是 Android SDK 里的一个工具, 用这个工具可以直接操作管理Android模拟器或者真实的Android设备。它的主要功能有:

  • 在设备上运行Shell命令;

  • 将本地APK软件安装至模拟器或Android设备;

  • 管理设备或手机模拟器上的预定端口;

  • 在设备或手机模拟器上复制或粘贴文件。

ADB 是一个客户端-服务器程序程序,包括三个组件:
在这里插入图片描述

  • 客户端:负责发送命令。客户端在开发计算机上运行。可通过发出 adb 命令从·命令行终端调用客户端·。
  • 后台程序:负责在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
  • 服务器:负责管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行

三.adb连接真机或模拟器的方法

adb连接真机或者模拟器一共有以下3种方法

  1. 连接模拟器
  2. 有线连接真机
  3. 无线连接真机

1.连接夜神模拟器

  1. 启动夜神模拟器

  2. 连接模拟器

    • 使用win+r按键输入cmd,回车打开cmd窗口
    • adb connect 127.0.0.1:62001
      在这里插入图片描述
  3. 查看连接的设备

    • adb devices

      List of devices 设备名称
      attached 连接状态(devices设备正常连接、offline连接出现异常,设备无响应、unknown没有连接设备)
      在这里插入图片描述

  4. 启用设备的开发者选项,启动调试功能

  • 夜神模拟器:设置->点击版本号7次直到出现提示【开发者选项】->返回上一步能看到【开发者选项】->USB调试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.有线连接真机(需原装数据线)

  1. 将手机与电脑通过 USB 线连接

    • 确保 Android 手机的开发者选项 USB 调试模式已开启

    • 「设置」-「开发者选项」-「Android 调试」查看。开发者选项,点允许 usb 调试,然后就可以连上电脑了

      • 如果在设置里找不到开发者选项,在「设置」-「关于手机」连续点击「版本号」7 次。
        在这里插入图片描述
  2. cmd框输入adb devices 命令查看设备连接情况

    • List of devices 设备名称
    • attached 连接状态(devices设备正常连接、offline连接出现异常,设备无响应、unknown没有连接设备)
      在这里插入图片描述

3. 无线连接真机(需原装数据线)

  1. 将 Android 设备与要运行 adb 的电脑连接到同一个局域网

    • 比如连到同一个 WiFi。将手机与电脑通过USB线连接。
  2. 确保连接成功,在cmd窗口输入 adb devices 看是否能列出该设备
    在这里插入图片描述

  3. 让设备在 5555 端口监听TCP/IP连接

    • 开发者选项,点允许usb调试
    • 输入 adb tcpip 5555
    • 找到设备的 IP 地址
      • 进入手机的WIFI连接,进入连接属性,查看手机的 IP
      • 也可在**「设置」-「关于手机」-「状态信息」-「IP地址」**找到
        在这里插入图片描述
  4. 通过 IP 地址连接设备,在cmd窗口输入adb connect '手机ip地址'

    • 出现 connected to 192.168.31.109:5555 表示连接成功
      在这里插入图片描述

注:连接不成功,检查以下问题

  1. 确保网络和端口都没有问题,使用的是原装数据线
  2. 请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 adb connect 那一步
  3. 通过adb kill-server重新启动 adb 然后从头再来一次试试

四.常用命令

常用命令

adb version  查看版本
adb devices -l	查看已链接的设备
adb shell getprop ro.build.version.release	查看Android内核版本号
#查看正在运行的服务:语法 adb shell dumpsys activity services [<package-name>]
adb shell dumpsys activity | findstr “mResume” 1.查看手机屏幕当前应用页面Activity名称以及程序包名,入口类名 (window)
adb shell dumpsys window | grep mCurrent	2.查看手机屏幕当前应用页面Activity名称以及程序包名,入口类名(mac)adb start-server 启动adb 一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。
adb kill-server 停止adb
adb -P <port> start-server  指定 adb server 的网络端口 ADB的默认端口为 5037

注意

  • 查看前台(即手机当前界面)应用包名: adb shell dumpsys activity | find “mFocusedActivity” 注意:如果是真机的话,Android版本一般是在8.0以上,命令需要改下adb shell dumpsys activity | find “mResumedActivity”

1.常用简单的adb命令:

1、adb devices:                        获取设备列表和设备的状态
2、adb get-state:                      获取设备的状态(设备的状态有三种:device,设备连接正常;offline,连接出现异常,设备无响应;unknown,设备未连接;)
3、adb kill-server,adb start-server:  结束,启动adb服务
4、adb install -r:                     覆盖安装应用(apk)
5、adb uninstall:                      卸载应用(应用包名)
6、adb pull :                          将设备上的文件复制到电脑上
7、adb push :                          将电脑上的文件复制到设备上
8、adb reboot :                        重启设备
9、adb connect :                       远程连接设备
10、adb disconnect :                   断开设备连接

2.adb shell pm基本的命令:

  1. 列出安装在设备上的应用

    adb shell pm list package -s     列出系统应用
    adb shell pm list package -3     列出第三方的应用
    adb shell pm list package -i     列出来源
    db shell pm list package -f     列出包名和路径
    
  2. 列出应用apk的位置

     adb shell pm path packagename    列出应用apk的位置#### 列出应用的详细信息
    
  3. 列出应用的详细信息

    adb shell pm dump packagename  
    
  4. 清除应用的缓存数据

     adb shell pm clear packagename
    
  5. 安装卸载手机应用:

    首先将test.apk文件push到手机目录中比如/data/local/tmp

    adb shell pm install /data/local/tmp/test.apk       安装
    adb shell pm install –r /data/local/tmp/test.apk    重新安装
    adb shell pm uninstall -k packagename               卸载,加k保留缓存数据
    adb shell pm install -d apk                         允许降级安装
    

3.adb shell am基本的命令:

1、启动一个 Activity:adb shell am start -n activityname   
2、等待页面启动完成:adb shell am start -W activityname    
3、先停止应用再启动:adb shell am start -S activityname  
4、结束应用: am force-stop  packagename       

4.adb shell dumpsys基本的命令:

  1. 监控应用数据

     adb shell dumpsys cpuinfo       cpu信息adb shell dumpsys meminfo       内存信息
    adb shell dumpsys power         电源信息
    adb shell dumpsys battery       电池信息adb shell dumpsys wifi          wifi信息
    adb shell dumpsys notification  通知信息
    adb shell dumpsys activity      获取页面信息
    

5.关闭某项进程,以monkey为例:

  • 杀死monkey进程:

    ps | grep monkey     查看monkey进程的pid
    kill pid             杀死monkey进程
    

6.最近12小时的资源情况:

dumpsys procstats --hours 12    最近12小时的资源情况

7.录制屏幕命令:

adb shell screenrecord /sdcard/demo.mp4    视频录制命令

可选参数:

  1. 限制录制时间:
    参数: --time-limit

  2. 指定视频分辨率大小:
    参数: --size

  3. 指定视频的比特率:
    参数: --bit-rate

  4. 在命令行显示log:
    参数: --verbose

8.截图命令:

 adb shell screencap -p /sdcard/screen.png    截图并保存到指定位置

9.input命令:

adb shell input:

text 输入文本
keyevent 输入事件
tap 点击
swipe 滑动<坐标><坐标为原地,则是长按>

10.关于获取当前页面的信息:

adb shell dumpsys activity top | findstr ACTIVITY    获取当前界面的Activity
adb shell dumpsys activity | findstr mFocusedActivity   获取当前页面的activity

11.生成当前页面的xml文本:

adb shell uiautomator dump [file]    获取当前页面的xml信息

text 控件中显示的文本内容
class 控件的类型
package 包名
content-desc 说明
checkable 是否允许check
checked check状态
clickable 是否允许click
enabled 控件状态
focusable 是否允许获取焦点
focused 是否获取到焦点
scrollable 是否允许滚动
long-clickable 是否允许长安
password 是否是密码控件
selected select状态
bounds 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标

12.打印页面的log信息:

 logcat -s ActivityManager    打印页面的log信息

13.系统操作指令

adb shell getprop ro.product.model  获取设备型号adb shell getprop ro.build.version.release  获取设备 Android 系统版本adb get-serialno  获取设备的序列号(设备号)adb shell wm size  获取设备屏幕分辨率adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于 Android 7.0 以下,必须先启动 app
adb shell dumpsys activity |find "mResumedActivity" 查看前台应用包名,适用于 Android 8.0 以上,必须先启动 app

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

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

相关文章

软考-网络安全体系与网络安全模型

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 by 2023年10月 网络安全体系相关安全模型 BLP机密性模型 BLP&#xff08;Biba-格雷泽-麦克拉伦&#x…

centos 7.9离线安装wget

1.下载安装包 登录到wget官网上下载最新的wget的rpm安装包到本地 http://mirrors.163.com/centos/7/os/x86_64/Packages/ 2.上传安装包到服务器 3.安装 rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm 4.查看版本 wget -V

Cesium Vue(七)— GEOJSON数据展示

1. GeoJSON GeoJSON 是一种用于对各种地理数据结构进行编码的格式。 简而言之&#xff0c;GeoJSON为你提供了一种简单的格式来表示简单的地理特征以及它们的非空间属性。 结构&#xff1a; {"type": "Feature","geometry": {"type"…

uniapp——自定义组件插槽及使用

案例样式 自定义组件pageBox.vue <template><view><view class"bgColor" :style"{ height: bgHeight rpx }"></view><view class"main"><!-- 主要内容放这里 --><slot></slot></view>&…

taro使用defineConstants定义全局变量eslint报错该变量不存在

问题描述 在taro项目中使用defineConstants定义一些全局变量供业务代码中进行使用&#xff0c;全局变量声明config/index.js代码如下&#xff1a; module.exports {defineConstants: {LOGIN_URL: JSON.stringify(/baidu/login), },全局变量使用代码如下&#xff1a; /*** 跳…

【开源分享】基于Html开发的房贷计算器,模仿新浪财经

房贷计算器是一种房贷计算的在线计算Web应用&#xff0c;按用户选择的贷款类型、贷款金额、期限、利率可计算得出每月月供参考、支付利息、还款总额这些信息。本文模仿新浪财经开发的房贷计算器。 作品预览 https://fangdai.gitapp.cn 源码地址 https://github.com/geeeeeee…

NFTScan 支持非 EVM 公链的 NFT Collection 的认证功能

截止到 2023 年 10 月份&#xff0c;NFTScan 已经支持了 18 条区块链网络&#xff0c;其中有 14 条 是 EVM 兼容的区块链网络&#xff1a; Ethereum、BNBChain、Polygon、zkSync、Base、Linea、Arbitrum、Optimism、Avalanche、Fantom、PlatON、Cronos、Gnosis、Moonbeam。 另…

Qt消息对话框的使用

本文介绍Qt消息对话框的使用。 QMessageBox类是Qt编程中常用到的一个类&#xff0c;主要用来进行一些简单的消息提示&#xff0c;比如&#xff1a;问题对话框&#xff0c;信息对话框等&#xff0c;这些对话框都属于QMessageBox类的静态方法&#xff0c;使用起来比较简单&#…

Linux性能优化--性能追踪3:系统级迟缓(prelink)

12.0 概述 本章包含的例子说明了如何用Linux性能工具寻找并修复影响整个系统而不是某个应用程序的性能问题。阅读本章后&#xff0c;你将能够&#xff1a; 追踪是哪一个进程导致了系统速度的降低。用strace调查一个不受CPU限制的进程的性能表现。用strace调查一个应用程序是如…

华为云Stack的学习(十)

十一、华为云Stack容器服务介绍 1.云容器引擎服务CCE 云容器引擎&#xff08;Cloud Container Engine&#xff0c;CCE&#xff09;提供高度可扩展的、高性能的企业级Kubernetes集群&#xff0c;支持运行Docker容器。借助云容器引擎&#xff0c;可以在云上轻松部署、管理和扩展…

element-plus 表格-自定义样式实现2

<template><h2>表格修改样式利用属性修改</h2><h3>row-style 行样式</h3><h3>row-style header-row-style 不能改背景色</h3><h3>cell-style header-cell-style能改背景色</h3><el-tableref"tableRef":dat…

低调而无为而治,藏在超级应用背后的道家哲学

众所周知&#xff0c;Elon Musk 想将 Twitter 重新设计定位成一款“超级应用 - X”的野心已经不再是秘密。伴随着应用商店中 Twitter 标志性的蓝鸟 Logo 被 X 取代后&#xff0c;赛博世界充满了对这件事情各种角度的探讨与分析。 Musk 曾经无数次通过微信这一样本来推广他的“超…

【广州华锐互动】利用VR开展建筑塔吊安全操作学习的好处?

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活带来了前所未有的便利。在工程教育领域&#xff0c;VR建筑塔吊安全操作学习作为一种新型的教学手段&#xff0c;正逐渐成为提高教学质量和培养高素质工程…

electron学习笔记

electron&#xff1a;大前端背景下&#xff0c;用node.js做桌面端app的工具 1、安装&#xff1a;npm i electron 实际上是chromium Node.js 2、创建一个窗口 3、主进程&#xff08;操作硬件等&#xff0c;commonJS&#xff09;与渲染进程&#xff08;渲染页面&#xff0c;E…

2023年中国OK镜市场发展前景分析:OK镜市场发展空间潜力巨大[图]

角膜接触镜是戴在眼角膜上的特殊镜片。角膜接触镜分为硬镜和软镜&#xff0c;软镜即大众常见的“隐形眼镜”&#xff1b;硬镜材质较硬&#xff0c;舒适度略低于软镜&#xff0c;硬镜主要分为OK镜、硬性角膜接触镜和巩膜镜三类。 角膜接触镜分类 资料来源&#xff1a;共研产业咨…

Spring篇---第六篇

系列文章目录 文章目录 系列文章目录一、Spring 框架中的单例 Bean 是线程安全的么?二、Spring 是怎么解决循环依赖的?三、说说事务的隔离级别一、Spring 框架中的单例 Bean 是线程安全的么? Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程…

分布式和微服务

问题分析&#xff1a; 简单来说&#xff0c;分布式是一组通过网络进行通信&#xff0c;并且为了完成共同的计算任务的计算机节点组 成的系统。 分布式系统的设计理念&#xff0c;其实是来自于小型机或者大型机的计算能力的瓶颈和成本的 增加。 在集中式系统里面&#xff0c;要…

静态路由与双线BFD热备份

✍ 路由具体是什么概念&#xff1f; ✍ 路由表和路由协议有什么关系&#xff1f; ✍ 电信联通双线如何做路由热备份&#xff1f; ---- 什么叫路由&#xff1f; ---- 路由器 - 网络设备 - 转发数据 - 要有一张地图 - 路由表 ---- 路由表 - 指明要到达某个目…

竞赛选题 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

黑马JVM总结(三十六)

&#xff08;1&#xff09;CAS-概述 cas是配合volatile使用的技术 &#xff0c;对共享变量的安全性要使用synachonized加锁&#xff0c;但是CAS不加锁&#xff0c;它是使用where&#xff08;true&#xff09;的死循环&#xff0c;里面compareAndSwap尝试把结果赋值给共享变量&…