热门标签 | 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

推荐阅读
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文详细介绍了如何在CentOS 6.5系统上安装和配置Redis 3.0.6,包括必要的环境准备、软件包下载、编译安装及基本功能测试。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 2023年最新Linux环境下Android开发环境搭建指南
    2023年最新Linux环境下Android开发环境搭建指南,帮助Android开发者在Linux系统上快速搭建开发环境,解决常见的配置问题。 ... [详细]
  • MyBatis入门指南:环境搭建与基础配置详解
    本文详细介绍了MyBatis的基础配置流程,包括在Maven项目中添加MyBatis依赖、IDEA中配置数据库连接、导入SQL脚本以及编写mybatis-config.xml配置文件等关键步骤。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 本文详细探讨了Linux系统中的文件权限设置,包括常见的755、700等权限模式,以及这些权限在实际应用中的具体含义和作用。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是 ... [详细]
  • 本文介绍了蓝牙低功耗(BLE)中的通用属性配置文件(GATT),包括其角色、层次结构、属性、特性和服务等内容。 ... [详细]
  • 本文介绍了如何在Android应用中通过Intent调用其他应用的Activity,并提供了详细的代码示例和注意事项。 ... [详细]
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社区 版权所有