Android ADB命令集锦(更新中~~~)

常用ADB命令

这篇文章梳理Android开发过程中常用的命令。

adb

使用adb命令可以在某些情况下比IDE更加直接,更有效率的调试开发环境。

获取属性

  1. Android Build Id

    $ adb shell getprop ro.build.id
    
  2. Android Product

    $ adb devices -l
    List of devices attached
    serial number              device product:<product name> model:<model name> device:<device name> transport_id:<id number>
    
  3. Android Serial Number

    $ adb get-serialno/adb shell getprop ro.serialno
    
  4. Android OS version

    adb shell getprop ro.build.version.release
    

截屏

使用 screencap 命令:

$ adb shell screencap -p /sdcard/Download/1.png  # 最后的参数是路径,包含文件名
$ adb pull /sdcard/Download/1.png ~/Pictures/

先将截图保存到 /sdcard/Download/ 目录下,然后利用 pull 命令将截图提取到PC机。

permissions

使用命令adb shell来查看系统内的权限分组(permission_group)情况。

$ adb shell pm list permissions -g|more

可以查看输出结果。

All Permissions:

group:android.permission-group.CONTACTS
  permission:android.permission.WRITE_CONTACTS
  permission:android.permission.GET_ACCOUNTS
  permission:android.permission.READ_CONTACTS

group:android.permission-group.PHONE
  permission:android.permission.READ_CALL_LOG
  permission:android.permission.ACCESS_UCE_OPTIONS_SERVICE
  permission:android.permission.ANSWER_PHONE_CALLS
  permission:android.permission.READ_PHONE_NUMBERS
  permission:android.permission.READ_PHONE_STATE
  permission:android.permission.ACCESS_IMS_CALL_SERVICE
  permission:android.permission.CALL_PHONE
  permission:android.permission.ACCESS_UCE_PRESENCE_SERVICE
  permission:android.permission.WRITE_CALL_LOG
  permission:android.permission.USE_SIP
  permission:android.permission.PROCESS_OUTGOING_CALLS
  permission:com.android.voicemail.permission.ADD_VOICEMAIL

group:android.permission-group.CALENDAR
  permission:android.permission.READ_CALENDAR
  permission:android.permission.WRITE_CALENDAR

......

broadcast(广播)

$ adb shell am broadcast --es ACTION_TYPE "AUDIO" --es ACTION_SCHEDULE_ID "kc2xyo8gcy01" -a com.xxx.action.DIAGNOSTIC_REQUEST
  • –es 设置Intent的参数类型为String;
  • -a 设置参数action,设置接收动作的广播

Activity

启动Activity
$ adb shell am start -n "com.mobile/com.xx.view.activity.SplashActivity"

上述命令只是启动某个Activity,并未添加参数。
这里注意的,符号 “/” 两侧不一样,一般在gradle中配置applicationId的话,在实际使用此命令时需要注意的是,“/” 左侧与applicationId一致,右侧则是源码中具体Activity的完整限定名。 不注意的话,可能导致使用命令是提示找不到Activity错误

查看运行的Activity

获取当前任务栈顶层的Activity。

Linux:

adb shell dumpsys activity | grep "mFocusedActivity"

windows:

adb shell dumpsys activity | findstr "mFocusedActivity"

若上述命令没有返回任何可显示的值,可以将 mFocusedActivity 修改为 ResumedActivity 再进行尝试。

adb shell dumpsys activity | findstr "ResumedActivity"

8.0设备上使用关键字 ResumedActivity 才能获取到值。


Service

service即服务。

启动service
$ adb shell am startservice -n "com.xxx.xxx/.XXXService"

启动service,参数 -n 表明启动的Service的完整限定名。

查看运行service
$ adb shell dumpsys activity services

会列出所有的service,包含系统service,app的service。

要查看某个service是否运行.

$ adb shell dumpsys activity services | grep "xxxSerivce"

通过 grep 进行截取需要查看的service信息。


adb connect 无线连接失败

使用

adb connect 192.168.95.2:5555

无线连接手机失败,提示:

cannot connect to 192.168.95.2:5555: 由于目标计算机积极拒绝,无法连接。 (10061)

可以使用修改默认端口的方式处理。

  1. 将手机连接到PC;
  2. 使用adb devices命令确保手机连接上;
  3. 使用adb tcpip命令修改端口号;
adb tcpip 8888
  1. 再使用adb connect命令进行连接。

杀死进程(force-stop)

使用 force-stop 命令杀死进程

adb shell am force-stop com.taobao.taobao 

后面跟的是进程包名(applicationId)


卸载APK

卸载apk,使用 uninstall 命令

adb shell pm list packages
adb uninstall xx.xx

下使用pm命令列出安装的packages,然后在进行卸载命令。


模拟物理按键KEYCODE

adb shell input keyevent ${keycode}

常用KEYCODE:

  • KEYCODE_VOLUME_UP 24
  • KEYCODE_VOLUME_MUTE 164
  • KEYCODE_VOLUME_DOWN 25
  • KEYCODE_BRIGHTNESS_DOWN 220
  • KEYCODE_BRIGHTNESS_UP 221
  • KEYCODE_WAKEUP 224 // 唤醒设备,类似KEYCODE_POWER,如果设备已处于唤醒状态,无影响
  • KEYCODE_SLEEP 223 // 将设备切换到sleep状态(灭屏),类似KEYCODE_POWER,如果设备已经sleep,无效果
  • KEYCODE_POWER 26
  • KEYCODE_BACK 4
  • KEYCODE_HOME 3
  • KEYCODE_APP_SWITCH 187
  • KEYCODE_CALCULATOR 210 // 如果系统中有计算器APK,会被调用
  • KEYCODE_0 7
  • KEYCODE_1 8
  • KEYCODE_2 9
  • KEYCODE_3 10
  • KEYCODE_4 11
  • KEYCODE_5 12
  • KEYCODE_6 13
  • KEYCODE_7 14
  • KEYCODE_8 15
  • KEYCODE_9 16

添加keycode来模拟输入对应的键。


dumpsys

Doze模式测试

  1. 需要6.0以上的设备或模拟器;
  2. 在设备上安装APP;
  3. 运行App并且保证APP时活跃;
  4. 使用命令让设备强制进度idle模式:
adb shell dumpsys deviceidle enable # 启用功能
adb shell dumpsys deviceidle force-idle  # 使用 adb shell dumpsys deviceidle step 单步查看状态
  1. 准备好后,运行如下命令退出闲置模式;
adb shell dumpsys deviceidle unforce
  1. 重新激活设备:
adb shell dumpsys battery reset

应用待机模式下测试

  1. 需要6.0以上的设备或模拟器;
  2. 在设备上安装APP;
  3. 运行App并且保证APP时活跃;
  4. 使用一下命令,强制设备进入待机模式:
adb shell dumpsys battery unplug
adb shell am set-inactive <packageName> true
  1. 使用以下命令模拟唤醒您的应用:
adb shell am set-inactive <packageName> false
adb shell am get-inactive <packageName>

查看当前正在运行的Activity

Linux:

adb shell dumpsys activity | grep "mFocusedActivity"

windows:

adb shell dumpsys activity | findstr "mFocusedActivity"

获取当前任务栈顶层的Activity。

查看运行的Services

$ adb shell dumpsys activity services

会列出所有的service,包含系统service,app的service。

要查看某个service是否运行.

$ adb shell dumpsys activity services | grep "xxxSerivce"

通过 grep 进行截取。


keytool

keytool用于针对APK签名文件做出较多操作。

APK签名信息

  1. 修改apk后缀名为zip,解压后得到其中的META-INF文件夹;
  2. 在META-INF目录下找到RSA文件(一般根据签名的alias命名);
  3. 命令行下输入:keytool -printcert -file pathToRSAFile 命令,即可获取sha1签名信息。
keytool -printcert -file C:\Users\android\Desktop\KEY0.RSA

keystore信息

直接显示keystore原始文件的签名信息。

keytool -list -v -keystore "C:\Users\android\Desktop\keystore.jks"

即可以显示jdk文件中的所信息。

PKSC12

业内使用较多的签名文件格式是P12格式,因此keytool工具提供了对应格式的转换命令。

keytool -importkeystore -srckeystore {REPLACE_WITH_JKS_FILE} -srcstoretype JKS -deststoretype PKCS12 -destkeystore ConvertedCertificate.p12
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VoidHope

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值