热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

adb教程(非常详细)

adb教程(非常详细)原创博客不易,如若转载请注明来源。如有错误及问题,欢迎评论指出。一起学习文章目录adb教程࿰

adb教程(非常详细)


原创博客不易,如若转载请注明来源。
如有错误及问题,欢迎评论指出。一起学习



文章目录

  • adb教程(非常详细)
    • 简介
    • 安装
      • Windows
      • Ubuntu
      • Mac
    • 连接设备
      • 真机
      • 模拟器
    • 使用详解
      • adb相关
        • 开启/停止 `adb 服务`
        • 给`指定设备`发送命令
      • 设备相关
        • 查询
          • 查看cpu信息
        • 操作
      • 文件相关
      • 常用命令
        • 开启/停止 `adb 服务`
        • 给`指定设备`发送命令
        • `安装/卸载` apk
        • 导入/导出 `文件`
        • `截屏/录像`
        • `Activity`管理命令(ActivityManager)
        • `Package`管理命令(PackageManager)
        • 获取`设备属性`
        • 查看`内存`信息
        • `dumpsys` 获取系统数据
        • 查看手机系统`进程`
        • `输入法`相关
        • 使用 logcat 抓 `log` 信息
        • `电量管理`相关命令
        • 使用 adb 命令进入 `recovery` 模式
        • 启动、跳过 Google `开机向导`
        • 查看CPU信息
        • 按下指定按键
        • 输入文本


  • 参考文档
    • ADB 你想找的命令都在这里
    • adb 常用命令

简介

ADB(Android Debug Bridge) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具作为一个客户端-服务器程序。


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

adb 工具路径 android_sdk/platform-tools/

连接模拟器 ADB与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037 与 adb 服务器通信。然后,服务器设置与所有运行的Android模拟器/Android 设备连接。


安装


Windows


  • 下载
    • 官网 经常被墙
    • 只下载我们需要的工具
    • 个人保存Android-sdk、adb tool
  • 配置 platform-tools 目录的环境变量。

Ubuntu


  • apt安装

    apt install android-tools-adb

  • 查看接入ubuntu的设备

    lsusb

  • 创建adb_usb.ini文件,写入android设备的VID

    cd ~/.android
    touch adb_usb.ini
    # 在adb_usb.ini文件中写入以下内容:
    0x18d1

  • 创建权限文件:touch /etc/udev/rules.d/70-android.rules

    在70-android.rules文件中写入一下内容:
    UBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d002", MODE="0666"

  • 重启usb服务

    # 修改权限
    chmod 666 /etc/udev/rules.d/70-android.rules
    service udev restart

  • 重启adb服务

    adb kill-server
    adb start-server

  • 查看adb设备

    adb devices


Mac


  1. brew直接安装platform-tools

brew cask install android-platform-tools

  1. 安装安卓sdk后配置环境变量

连接设备


真机


  • 数据线连接

    • 手机打开USB调试连接电脑
  • wifi连接

    • 连接到同一wifi环境

    • 先插线连接成功

    • adb tcpip 5555切换为tcpip模式,端口为5555,可修改

    • 拔线

    • 查看手机ip

    • 使用命令连接

      adb connect <IP>:5555


模拟器


连接不同虚拟机的虚拟端口



  • 示例

# 示例&#xff0c;连接夜神模拟器
adb connect 127.0.0.1:62001

  • 查看运行中模拟器端口号
  • 使用tasklist查看模拟器进程PID

tasklist

image


  • 使用netstat查看端口号占用

netstat -ano | findstr <PID>

  • 官方提供的默认端口号
    | 模拟器 | PORT |
    | ------------------ | ----- |
    | 夜神模拟器 | 62001 |
    | 逍遥安卓模拟器 | 21503 |
    | BlueStacks&#xff08;蓝叠&#xff09; | 5555 |
    | 雷电安卓模拟器 | 5555 |
    | 天天安卓模拟器 | 5037 |
    | 网页MuMu | 7555 |
    | 安卓模拟器大师 | 54001 |
    | Genymotion | 5555 |

使用详解


adb相关


开启/停止 adb 服务


  • 开启服务

    adb start-server

  • 停止服务

    adb kill-server

    img


指定设备发送命令

当电脑连接多个设备时&#xff0c;发出 adb 命令&#xff0c;必须指定一个设备

adb -s serial_number command
# 例如
adb -s BY2XEE157 install path_to_apk

设备相关


查询


查看cpu信息

# 登陆到设备环境
adb shell
# 查看cpu信息
cat /proc/cpuinfo

可能看到以下的cpu版本&#xff1a;


  • arm32位
    • ARMv7
    • ARMv7s
  • arm64位
    • AArch64
    • ARMv8
    • ARMv9
  • x86
    • Intel
    • AMD

操作


文件相关


常用命令


  • 参考文档

    • ADB 你想找的命令都在这里
    • adb 常用命令
    • MAC系统下ADB入门与简单使用

开启/停止 adb 服务


  • 开启服务

    adb start-server

  • 停止服务

    adb kill-server


指定设备发送命令

当电脑连接多个设备时&#xff0c;发出 adb 命令&#xff0c;必须指定一个设备

adb -s serial_number command
# 例如
adb -s BY2XEE157 install path_to_apk

安装/卸载 apk


  • 安装apk

    adb install <PATH>

  • 卸载apk

    adb unstall <包名>


导入/导出 文件


  • 导出手机文件

    adb pull remote local

  • 导入文件到手机

    adb push local remote


截屏/录像


  • 截屏

    adb shell screencap 文件保存路径

  • 录像

    adb shell screenrecord 文件保存路径

    Control &#43; C 停止屏幕录制&#xff0c;否则&#xff0c;到三分钟或 --time-limit 设置的时间限制时&#xff0c;录制将自动停止。

    但是有以下几个弊端&#xff1a;

    1. 最长只能录制3分钟
    2. 录制的视频没有声音
    • screenrecord 部分参数

      选项说明
      –size width x height设置分辨率 eg&#xff1a;1280x720
      –bit-rate rate视频比特率,默认值为 4Mbps,可以设6Mbps&#xff0c;这样质量更好 eg:adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
      –time-limit time设置最大录制时长&#xff08;以秒为单位&#xff09;。默认值和最大值均为 180&#xff08;3 分钟&#xff09;。

Activity管理命令&#xff08;ActivityManager&#xff09;


  • 启动程序

    # adb shell am start <包名>/
    adb shell am start com.smile.gifmaker/com.yxcorp.gifshow.HomeActivity

  • 启动 Activity

    adb shell am start -n 包名/类名

  • 启动 service

    adb shell am startservice 包名/类名

  • 发送广播

    adb shell am boradcast -a 广播Action

  • 强行停止应用

    # shell am force-stop <包名d>
    adb shell am force-stop com.smile.gifmaker


Package管理命令&#xff08;PackageManager&#xff09;


  • 启动apk

    # adb shell am start <包名>/
    adb shell am start com.smile.gifmaker/com.yxcorp.gifshow.HomeActivity

  • 强制退出apk

    # shell am force-stop <包名d>
    adb shell am force-stop com.smile.gifmaker

  • 卸载 apk

    adb shell pm uninstall 包名

  • 查看手机中所有 apk 包名

    adb shell pm list packages

  • 查看已知权限组

    adb shell pm list permission-groups

  • 查看手机 Feature 支持

    adb shell pm list features

  • 根据包名&#xff0c;查看apk安装路径

    adb shell pm path 包名

  • 清除 app 数据

    adb shell pm clear 包名

  • 多用户相关

    • 查看支持最多用户数

      adb shell pm get-max-users

    • 查询系统所有用户

      adb shell pm list users

    • 创建新用户

      adb shell pm create-user user_name

    • 移除指定id用户

      adb shell pm remove-user user_id


获取设备属性

使用命令adb shell getprop &#43;下面的属性&#xff0c;即可获取相应的属性


属性名含义
ro.build.version.sdkSDK 版本
ro.build.version.releaseAndroid 系统版本
ro.product.model型号
ro.product.brand品牌
ro.product.name设备名

adb shell getprop ro.product.model
vivo X9i

查看内存信息

adb shell dumpsys meminfo # 查看整个设备的内存信息
adb shell dumpsys meminfo pid # 查看指定进程的内存信息
adb shell dumpsys meminfo com.package.name # 查看指定应用的内存信息
​&#96;&#96;&#96;&#96;&#96;&#96;bash
dalvik&#xff1a;是指dalvik所使用的内存。 native&#xff1a;是被native堆使用的内存。应该指使用C\C&#43;&#43;在堆上分配的内存。
VSS- Virtual Set Size 虚拟耗用内存&#xff08;包含共享库占用的内存&#xff09;
RSS- Resident Set Size 实际使用物理内存&#xff08;包含共享库占用的内存&#xff09;
PSS- Proportional Set Size 实际使用的物理内存&#xff08;比例分配共享库占用的内存&#xff09;
USS- Unique Set Size 进程独自占用的物理内存&#xff08;不包含共享库占用的内存&#xff09;
一般来说内存占用大小有如下规律&#xff1a;VSS >&#61; RSS >&#61; PSS >&#61; USS

dumpsys 获取系统数据


  • 获取当前运行的 activity

    adb shell dumpsys activity | findstr Run

  • 获取apk版本号、权限等信息的方法

    adb shell dumpsys package com.xxx.xxx(包名)


查看手机系统进程


  • 使用 top 命令查看系统进程

    adb shell top

  • 使用 ps 命令查看系统进程

    adb shell ps

  • 结合 findstr 命令过滤多余的信息

    adb shell ps | findstr qq


输入法相关


  • 获取已安装所有输入法

    adb shell ime list -s

  • 获取当前设备输入法

    adb shell settings get secure default_input_method

  • 设置输入法

    adb shell ime set com.android/input
    # 或者
    adb shell settings put secure default_input_method com.android/input


使用 logcat 抓 log 信息


  • 使用 logcat 抓取 log 信息

    adb logcat > 1.txt

  • 使用 -s 过滤log标签

    adb logcat -s 关注log标签

  • 使用 -c 清除缓存log

    adb logcat -c


电量管理相关命令


  • 模拟拔下设备电源

    adb shell dumpsys battery unplug

  • 低电量条件下的行为

    adb shell settings put global low_power 1

  • 恢复电源修改

    adb shell dumpsys battery reset


使用 adb 命令进入 recovery 模式

进入Recovery 模式可以使用组合键&#xff0c;也可以使用adb 命令 adb 命令进入recovery 模式如下adb reboot recovery


启动、跳过 Google 开机向导


  • 跳过

    adb shell pm disable com.google.android.setupwizard
    adb shell settings put global device_provisioned 1
    adb shell settings put secure user_setup_complete 1

  • 启动

    adb shell am start com.google.android.setupwizard/.user.WelcomeActivity


查看CPU信息

# 登陆到设备环境
adb shell
# 查看cpu信息
cat /proc/cpuinfo

可能看到以下的cpu版本&#xff1a;


  • arm32位
    • ARMv7
    • ARMv7s
  • arm64位
    • AArch64
    • ARMv8
    • ARMv9
  • x86
    • Intel
    • AMD

按下指定按键

adb shell input keyevent <KEY_CODE>

  • 电话键

NAMEINFOCODE
KEYCODE_CALL拨号键5
KEYCODE_ENDCALL挂机键6
KEYCODE_HOME按键Home3
KEYCODE_MENU菜单键82
KEYCODE_BACK返回键4
KEYCODE_SEARCH搜索键84
KEYCODE_CAMERA拍照键27
KEYCODE_FOCUS拍照对焦键80
KEYCODE_POWER电源键26
KEYCODE_NOTIFICATION通知键83
KEYCODE_MUTE话筒静音键91
KEYCODE_VOLUME_MUTE扬声器静音键164
KEYCODE_VOLUME_UP音量增加键24
KEYCODE_VOLUME_DOWN音量减小键25

  • 控制键

NAMEINFOCODE
KEYCODE_ENTER回车键66
KEYCODE_ESCAPEESC键111
KEYCODE_DPAD_CENTER导航键 确定键23
KEYCODE_DPAD_UP导航键 向上19
KEYCODE_DPAD_DOWN导航键 向下20
KEYCODE_DPAD_LEFT导航键 向左21
KEYCODE_DPAD_RIGHT导航键 向右22
KEYCODE_MOVE_HOME光标移动到开始键122
KEYCODE_MOVE_END光标移动到末尾键123
KEYCODE_PAGE_UP向上翻页键92
KEYCODE_PAGE_DOWN向下翻页键93
KEYCODE_DEL退格键67
KEYCODE_FORWARD_DEL删除键112
KEYCODE_INSERT插入键124
KEYCODE_TABTab键61
KEYCODE_NUM_LOCK小键盘锁143
KEYCODE_CAPS_LOCK大写锁定键115
KEYCODE_BREAKBreak/Pause键121
KEYCODE_SCROLL_LOCK滚动锁定键116
KEYCODE_ZOOM_IN放大键168
KEYCODE_ZOOM_OUT缩小键169

  • 组合键

NAMEINFOCODE
KEYCODE_ALT_LEFTAlt&#43;Left
KEYCODE_ALT_RIGHTAlt&#43;Right
KEYCODE_CTRL_LEFTControl&#43;Left
KEYCODE_CTRL_RIGHTControl&#43;Right
KEYCODE_SHIFT_LEFTShift&#43;Left
KEYCODE_SHIFT_RIGHTShift&#43;Right

  • 基本

NAMEINFOCODE
KEYCODE_0按键’0’7
KEYCODE_1按键’1’8
KEYCODE_2按键’2’9
KEYCODE_3按键’3’10
KEYCODE_4按键’4’11
KEYCODE_5按键’5’12
KEYCODE_6按键’6’13
KEYCODE_7按键’7’14
KEYCODE_8按键’8’15
KEYCODE_9按键’9’16
KEYCODE_A按键’A’29
KEYCODE_B按键’B’30
KEYCODE_C按键’C’31
KEYCODE_D按键’D’32
KEYCODE_E按键’E’33
KEYCODE_F按键’F’34
KEYCODE_G按键’G’35
KEYCODE_H按键’H’36
KEYCODE_I按键’I’37
KEYCODE_J按键’J’38
KEYCODE_K按键’K’39
KEYCODE_L按键’L’40
KEYCODE_M按键’M’41
KEYCODE_N按键’N’42
KEYCODE_O按键’O’43
KEYCODE_P按键’P’44
KEYCODE_Q按键’Q’45
KEYCODE_R按键’R’46
KEYCODE_S按键’S’47
KEYCODE_T按键’T’48
KEYCODE_U按键’U’49
KEYCODE_V按键’V’50
KEYCODE_W按键’W’51
KEYCODE_X按键’X’52
KEYCODE_Y按键’Y’53
KEYCODE_Z按键’Z’54

输入文本

adb shell input text hello

推荐阅读
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了Java类的访问级别,包括public、private、protected和package-private,并重点解释了package-private的含义和作用。package-private表示类只能在其所在的包内可见,而不能被其他包的类访问。该文章还提到了其他访问级别的作用和范围,并对Java类的可见性进行了详细说明。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
author-avatar
赵月916_640
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有