• (二)adb的普通命令和下载地址


    下载地址

    ADB和Fastboot for Windows
    
    https://dl.google.com/android/repository/platform-tools-latest-windows.zip
    
    ADB和Fastboot for Mac
    
    https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
    
    ADB和Fastboot for Linux
    
    https://dl.google.com/android/repository/platform-tools-latest-linux.zip
    查看Android 系统版本
    adb shell getprop ro.build.version.release
    
    查看设备信息型号命令
    adb shell getprop ro.product.model
    
    单独查看某一硬件或系统属性:adb shell getprop <属性名>
    属性名 含义
    ro.build.version.sdk SDK 版本
    ro.build.version.release Android 系统版本
    ro.product.model 型号
    ro.product.brand 品牌
    ro.product.name 设备名
    ro.product.board 处理器型号
    persist.sys.isUsbOtgEnabled 是否支持 OTG
    dalvik.vm.heapsize 每个应用程序的内存上限
    ro.sf.lcd_density 屏幕密度
    rro.build.version.security_patch Android 安全补丁程序级别
    获取 root 权限
    adb root
    
    可以直接获取 root 权限,并挂载系统文件系统为可读写状态
    adb remount
    
    列出指定应用的 dump 信息
    adb shell pm dump 包名
    
    列出对应包名的 .apk 位置
    adb shell pm path 包名
    
    进入设备shell
    adb shell
    
    查看所有应用列表
    adb shell pm list packages
    
    查看系统应用列表
    adb shell pm list packages -s
    
    查看第三方应用列表
    adb shell pm list packages -3
    
    返回设备序列号SN值:
    adb get-serialno
    
    获取设备的ID:
    adb shell settings get secure android_id
    
    安装apk
    adb install -l -r -t -s -d -g path_to_apk
    

    -l:将应用安装到保护目录 /mnt/asec;
    -r:允许覆盖安装;
    -t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用;
    -s:将应用安装到 sdcard;
    -d:允许降级覆盖安装;
    -g:授予所有运行时权限;

    path_to_apk:apk的绝对路径。
    安装淘宝apk:

    adb install -l /data/local/tmp/taobao.apk
    

     重新安装

    adb install -r
    
    卸载apk
    adb uninstall -k "packagename"
    

    "packagename":表示应用的包名
    -k 参数可选,表示卸载应用但保留数据和缓存目录。
    手机淘宝:

    adb uninstall com.taobao.taobao
    
    清除应用数据与缓存命令
    adb shell pm clear "packagename"
    

    相当于在设置里的应用信息界面点击「清除缓存」和「清除数据」。

    示例:

    adb shell pm clear com.taobao.taobao 表示清除 手机淘宝数据和缓存。
    
    滑动解锁

    如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。

    adb shell input swipe 300 1000 300 500

    (其中参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。)

    输入文本

    在焦点处于某文本框时,可以通过 input 命令来输入文本。

    adb shell input text *** (***即为输入内容)

    中文输入有问题

    切换键盘
    adb shell ime set package_name input method
    eg:adb shell ime set com.sohu.inputmethod.sogou/.SogouIME input method 

    切换至搜狗输入法。

    获取app版本号
    adb shell dumpsys package packageName
    eg:adb shell dumpsys package org.cnodejs.android.md | findstr versionName
    

    显示搜狗输入法的版本号。(packageName获取:与卸载app获取packageName一致)

    屏幕分辨率命令
    adb shell wm size
    

    如果使用命令修改过,那输出可能是:

    Physical size: 1080x1920
    Override size: 480x1024
    表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。

    屏幕密度命令
    adb shell wm density

    如果使用命令修改过,那输出可能是:
    Physical density: 480
    Override density: 160
    表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。

    获取设备列表及设备状态:
    adb devices
    
    获取设备的状态

    设备的状态有 device , offline , unknown3种,其中device:设备正常连接,offline:连接出现异常,设备无响应,unknown:没有连接设备。

    adb get-state
    
    android_id查看命令
    adb shell settings get secure android_id
    查看设备ip地址
    adb shell ifconfig | grep Mask或者adb shell netcfg  
    查看CPU 信息命令
    adb shell cat /proc/cpuinfo
    
    查看内存信息命令
    adb shell cat /proc/meminfo
    
    获取电量
    adb shell dumpsys battery

    在测试电量时,我们必须要保证手机是非充电状态
    切换非充电状态

    adb shell duupsys battery set status 1

    只要是status值非2就可以,status值为2时是充电状态

    强制停止应用命令:

    adb shell am force-stop "packagename"

    例如强制停止淘宝:

    adb shell am force-stop com.taobao.taobao
    
    重启Android
    adb reboot

    重启到Recovery界面

    adb reboot recovery

    重启到bootloader界面

    adb reboot bootloader
    
    关闭 USB 调试模式命令
    adb shell settings put global adb_enabled 0 

    需要手动恢复:「设置」-「开发者选项」-「Android 调试」

    修改显示区域
    adb shell wm overscan 0,0,0,200

    四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白

    恢复原显示区域命令
    adb shell wm overscan reset  
    截屏并保存至 sdcard 目录:
    adb shell screencap -p /sdcard/screen.png 

    实用功能:
    截图保存到电脑

    adb exec-out screencap -p > sc.png

    然后将 png 文件导出到电脑

    adb pull /sdcard/sc.png
    
    录制视频并保存至sdcard
    adb shell screenrecord sdcard/record.mp4

    执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard:

    adb shell screenrecord sdcard/record.mp4

    录制屏幕:录制屏幕以 mp4 格式保存到 /sdcard:

    adb shell screenrecord /sdcard/filename.mp4
    

    需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。

    如果需要导出到电脑

    adb pull /sdcard/filename.mp4
    
    推送本地文件至Android设备
    adb push 

    如推送 D 盘下的 push.txt 至 Sdcard:adb push d:push.txt sdcard/ 注意sdcard 后面的斜杠不能少。

    显示屏参数
    adb shell dumpsys window displays

    输出示例:

    WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
    Display: mDisplayId=0
    init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
    deferred=false layoutNeeded=false

    其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。

    设备的更多硬件与系统属性可以通过如下命令查看
    adb shell cat /system/build.prop
    

     

    状态栏和导航栏的显示隐藏
    adb shell settings put global policy_control 
    

    可由如下几种键及其对应的值组成,格式为 =:=。

    key 含义 value 含义
    immersive.full 同时隐藏 apps 所有应用
    immersive.status 隐藏状态栏 * 所有界面
    immersive.navigation 隐藏导航栏 packagename 指定应用
    immersive.preconfirms ? -packagename 排除指定应用

    表示设置在所有界面下都同时隐藏状态栏和导航栏

    adb shell settings put global policy_control immersive.full=* 

    表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏

    adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 

    恢复正常模式

    adb shell settings put global policy_control null

    表示设置在所有界面下都同时隐藏状态栏和导航栏

    adb shell settings put global policy_control immersive.full=* 

    表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏

    adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 

    恢复正常模式

    adb shell settings put global policy_control null
    
    模拟按键/输入
    adb shell input keyevent keycode  
    

    不同的 keycode有不同的功能:

    keycode 含义
    3 HOME 键
    4 返回键
    5 打开拨号应用
    6 挂断电话
    26 电源键
    27 拍照(需要在相机应用里)
    61 Tab键
    64 打开浏览器
    67 退格键
    80 拍照对焦键
    82 菜单键
    85 播放/暂停
    86 停止播放
    92 向上翻页键
    93 向下翻页键
    111 ESC键
    112 删除键
    122 移动光标到行首或列表顶部
    123

    移动光标到行末或列表底部

    124 插入键
    164 静音
    176 打开系统设置
    207 打开联系人
    208 打开日历
    209 打开音乐
    220 降低屏幕亮度
    221 提高屏幕亮度
    223 系统休眠
    224 点亮屏幕
    231 打开语音助手
    276 如果没有 wakelock 则让系统休眠

     

    Android四大组件有

    Activity,
    Service服务,
    Content Provider内容提供者,
    BroadcastReceiver广播接收器,
    

    具体不做多讲,常用的有以下:

    查看当前显示的activity

    Activity活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧

    方法1:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'
    方法2:adb shell dumpsys activity | grep -i run
    

      

    调起 Activity(启动app)
    adb shell am start [options] package_and_activity
    

    表示调起微信主界面

    例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI 

    表示调起qq主界面

    例如: adb shell am start -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity 
    或者:adb shell dam start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity

    package_and_activity获取:(查看当前显示的activity)

    adb shell "dumpsys window | grep mCurrentFocus"
    

      

    查看正在运行的 Services
    adb shell dumpsys activity services "packagename" 

    其中参数不是必须的,指定 "packagename" 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。

    调起 Service
    命令格式:adb shell am startservice [options] 

    例如:

    adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService 表示调起微信的某 Service。 
    发送broadcast
    adb shell am broadcast -a <action>

    am broadcast 后面的参数有:

    [-a <ACTION>]
    [-d <DATA_URI>]
    [-t <MIME_TYPE>]
    [-c <CATEGORY> [-c <CATEGORY>] ...]
    [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
    [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
    [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
    [-n <COMPONENT>]
    [-f <FLAGS>] [<URI>]

    例如:

    adb shell am broadcast -a MyAction --es city "shenzhen" --ei year 2014 --ez flag true

    说明:红色为EXTRA_KEY,绿色为VALUE,分别为String类型,int类型,boolean类型

    打印日志:

    Android 的日志分为如下几个优先级(priority):

    V —— Verbose(最低,输出得最多)
    D —— Debug I —— Info
    W —— Warning
    E —— Error
    F —— Fatal
    S —— Silent(最高,啥也不输出)

    按某级别过滤日志则会将该级别及以上的日志输出。
    比如,命令:adb logcat *:W 会将 Warning、Error、Fatal 和 Silent 日志输出。
    (注: 在 macOS 下需要给 :W 这样以 作为 tag 的参数加双引号,如 adb logcat ":W",不然会报错 no matches found: :W。)

    adb logcat	打印当前设备上所有日志
    adb logcat *:W	过滤打印严重级别W及以上的日志
    adb logcat l findstr ***> F:log.txt	把仅含***的日志保存到F盘的log.txt文件中
    adb logcat -c	清除屏幕上的日志记录
    adb logcat -c && adb logcat -s ActivityManager l grep "Displayed”	客户端程序启动时间获取日志
    adb logcat > F:log.txt	打印当前设备上所有日志保存到F盘的log.txt文件中
    adb logcat l findstr ***	打印过滤仅含***的日志
    adb logcat l findstr ***> F:log.txt	把仅含***的日志保存到F盘的log.txt文件中
    

    按 tag 和级别过滤日志:命令:adb logcat ActivityManager:I MyApp:D *:S

    表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。
    日志格式可以用:adb logcat -v 选项指定日志输出格式。
    日志支持按以下几种 :默认格式brief、process、tag、raw、time、long
    指定格式可与上面的过滤同时使用。比如:adb logcat -v long ActivityManager:I *:S

    清空日志
    adb logcat -c
    内核日志
    adb shell dmesg
    
    结束adb服务
    adb kill-server
    启动adb服务
    adb start-server
    结束 adb 服务
    adb kill-server
    
    启动 adb 服务
    adb start-server

    通常两个命令一起用,设备状态异常时使用 kill-server,运行 start-server 进行重启服务。

    以上这些ADB命令在APP面试中被问的可能性以及工作中要用的可能性不言而喻,大家多敲敲键盘就可以掌握了

    连接逍遥模拟器

    adb connect 127.0.0.1:21503
    

      

      

     

     

  • 相关阅读:
    我眼中的SCRUM
    文本转换程序
    免费接口
    看板,敏捷的另一种实现方式
    Android Asynchronous Http Client-Android异步网络请求客户端接口
    hdu4753 Fishhead’s Little Game 状态压缩,总和一定的博弈
    dbcp、c3p0、jdbc常用连接配置
    IE安全分析
    redis入侵小结
    heartbleed漏洞利用
  • 原文地址:https://www.cnblogs.com/lvchengda/p/13158122.html
Copyright © 2020-2023  润新知