文章目录
常用ADB命令
这篇文章梳理Android开发过程中常用的命令。
adb
使用adb命令可以在某些情况下比IDE更加直接,更有效率的调试开发环境。
获取属性
-
Android Build Id
$ adb shell getprop ro.build.id
-
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>
-
Android Serial Number
$ adb get-serialno/adb shell getprop ro.serialno
-
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)
可以使用修改默认端口的方式处理。
- 将手机连接到PC;
- 使用adb devices命令确保手机连接上;
- 使用adb tcpip命令修改端口号;
adb tcpip 8888
- 再使用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模式测试
- 需要6.0以上的设备或模拟器;
- 在设备上安装APP;
- 运行App并且保证APP时活跃;
- 使用命令让设备强制进度idle模式:
adb shell dumpsys deviceidle enable # 启用功能
adb shell dumpsys deviceidle force-idle # 使用 adb shell dumpsys deviceidle step 单步查看状态
- 准备好后,运行如下命令退出闲置模式;
adb shell dumpsys deviceidle unforce
- 重新激活设备:
adb shell dumpsys battery reset
应用待机模式下测试
- 需要6.0以上的设备或模拟器;
- 在设备上安装APP;
- 运行App并且保证APP时活跃;
- 使用一下命令,强制设备进入待机模式:
adb shell dumpsys battery unplug
adb shell am set-inactive <packageName> true
- 使用以下命令模拟唤醒您的应用:
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签名信息
- 修改apk后缀名为zip,解压后得到其中的META-INF文件夹;
- 在META-INF目录下找到RSA文件(一般根据签名的alias命名);
- 命令行下输入: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