- 安装卸载应用程序
adb install 用于安装
- adb install <apkfile> 参数apkfile 为.apk 文件名称 # 安装的时候最好用引号包起来
- adb install -r test.apk 保留数据和缓存文件,重新安装apk
- adb install -s test.apk 安装apk 到sd 卡
- --install-location location:使用以下某个值来设置安装位置:
0:使用默认安装位置。
1:在内部设备存储上安装。
2:在外部介质上安装。
安装成功,返回成功提示 "Success";
安装失败,会返回以下:
INSTALL_FAILED_ALREADY_EXISTS
此时需要用 -r 参数来重新安装。
INSTALL_FAILED_SIGNATURE_ERROR
应用的签名不一致,可能是发布版和调试版签名不同所致。也有可能是没卸载旧应用导致。
INSTALL_FAILED_INSUFFICIENT_STORAGE
存储空间不足,需要检查设备存储情况。
- app卸载
adb uninstall cn.com.test.mobile
# 卸载app 但保留数据和缓存文件
$adb uninstall -k ccn.com.test.mobile
- 获取启动页Activity
- 通过monkey日志查看
- 通过adb shell dumpsys package com.zhao.myreader 查看
- aapt dump badging D:\dushuwu.apk # 加下面第22行
D:\android_sdk\build-tools\30.0.0-preview>aapt dump badging D:\dushuwu.apk
package: name='com.zhao.myreader' versionCode='301' versionName='3.0.1' compileSdkVersion='29' compileSdkVersionCodename='10'
sdkVersion:'23'
targetSdkVersion:'29'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.VIBRATE'
uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission: name='android.permission.READ_EXTERNAL_STORAGE'
uses-permission: name='android.Manifest.permission.INTERNAL_SYSTEM_WINDOW'
uses-permission: name='android.permission.DISABLE_KEYGUARD'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
uses-permission-sdk-23: name='android.permission.ACCESS_COARSE_LOCATION'
uses-permission: name='android.permission.CAMERA'
application-label:'璇讳功灞?
application-label-af:'璇讳功灞?
application-label-am:'璇讳功灞?
application-label-zu:'璇讳功灞?
application-icon-160:'res/mipmap-mdpi-v4/ic_launcher.png'
application-icon-65534:'res/mipmap-mdpi-v4/ic_launcher.png'
application: label='璇讳功灞? icon='res/mipmap-mdpi-v4/ic_launcher.png'
application-debuggable
launchable-activity: name='com.zhao.myreader.ui.home.MainActivity' label='' icon='' # com.zhao.myreader.ui.home.MainActivity在此处
feature-group: label=''
uses-feature-not-required: name='android.hardware.camera'
uses-feature-not-required: name='android.hardware.camera.autofocus'
uses-feature-not-required: name='android.hardware.camera.flash'
uses-feature-not-required: name='android.hardware.camera.front'
uses-feature-not-required: name='android.hardware.screen.landscape'
uses-feature-not-required: name='android.hardware.wifi'
uses-feature: name='android.hardware.faketouch'
uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps'
uses-feature-sdk-23: name='android.hardware.location'
uses-implied-feature-sdk-23: name='android.hardware.location' reason='requested android.permission.ACCESS_COARSE_LOCATION permission'
main
other-activities
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'af' 'am' 'ar' 'as' 'az' 'be' 'bg' 'bn' 'bs' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-CA' 'en-GB' 'en-IN' 'en-XC' 'es' 'es-US' 'et' 'eu' 'fa' 'fi' 'fr' 'fr-CA' 'gl' 'gu' 'he' 'hi' 'hr' 'hu' 'hy' 'id' 'in' 'is' 'it' 'iw' 'ja' 'ka' 'kk' 'km' 'kn' 'ko' 'ky' 'lo' 'lt' 'lv' 'mk' 'ml' 'mn' 'mr' 'ms' 'my' 'nb' 'ne' 'nl' 'or' 'pa' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'si' 'sk' 'sl' 'sq' 'sr' 'sr-Latn' 'sv' 'sw' 'ta' 'te' 'th' 'tl' 'tr' 'uk' 'ur' 'uz' 'vi' 'zh' 'zh-CN' 'zh-HK' 'zh-TW' 'zu'
densities: '160' '240' '320' '480' '640' '65534'
native-code: 'armeabi' 'armeabi-v7a' 'x86'
- adb devices #查看连接设备
adb [-d|-e|-s <serialNumber>] <command>
参数:
-d 指定当前唯一通过USB 连接的Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serialNumber> 指定相应serialNumber 号的设备/模拟器为命令目标
command 为所需对设备执行的命令
- adb start-server 启动服务
adb -P <port> start-server # 指定adb server 的网络端口port (默认为5037)启动服务
- adb kill-server 停止服务
- adb version # 查看adb 版本信息
- adb -s cf27456f shell # 指定连接设备使用命令
- adb install test.apk # 安装应用
- adb install -r demo.apk #覆盖安装
- adb uninstall cn.com.test.mobile #卸载应用,需要指定包
- adb uninstall -k cn.com.test.mobile #卸载app 但保留数据和缓存文件
- adb shell pm 模拟android行为或者查询设备上的应用
参数选项:-f:查看关联文件,即应用apk的位置跟对应的包名(如:package:/system/app /MusicPlayer.apk=com.sec.android.app.music);
-d:查看disabled packages;
-e:查看enable package;
-s:查看系统package;
-3:查看第三方package;
-i:查看package的对应安装者(如:1、 package:com.tencent.qqmusic installer=null 2、package:com.tencent.qqpim installer=com.android.vending);
-u:查看曾被卸载过的package。(卸载后又重新安装依然会被列 入);
--user<USER_ID>:The user space to query。
list permission-groups :打印所有已知的权限群组。
list permissions [options] <GROUP> :选择性的打印权限。参数选项:
list features :设备特性。硬件之类的性能。
list libraries :当前设备支持的libs。
list users :系统上所有的users。(上面提到的USER_ID查询方式,如:UserInfo{0:Primary:3}那么USER_ID为0)
path <PACKAGE> :查询package的安装位置。
install [options] <PATH> :安装命令。
uninstall [options] <PACKAGE> :卸载命令。
clear <PACKAGE> :对指定的package删除所有数据。
enable <PACKAGE_OR_COMPONENT> :使package或component可用。(如:pm enable "package/class")
disable <PACKAGE_OR_COMPONENT> :使package或component不可用。(如:pm disable "package/class")
disable-user [options] <PACKAGE_OR_COMPONENT> :参数选项:--user <USER_ID>: The user to disable.
grant <PACKAGE_PERMISSION> :授权给应用。
revoke <PACKAGE_PERMISSION> :撤销权限。
set-install-location <LOCATION> :设置默认的安装位置。其中0:让系统自动选择最佳的安装位置。1:安装到内部的设备存储空间。2:安装到外部的设备存储空间。(这只用于调试应用程序, 使用该命令可能导致应用程序退出或者其他不适的后果)。
get-install-location :返回当前的安装位置。返回结果同上参数选项。
set-permission-enforced <PERMISSION> [true|false] :使指定权限生效或者失效。
create-user <USER_NAME> :增加一个新的USER。
remove-user <USER_ID> :删除一个USER。
get-max-users :该设备所支持的最大USER数。(某些设备不支持该命令)
- adb shell pm list packages #列出手机装的所有app 的包名
- adb shell pm list packages -3 #列出除了系统应用的第三方应用包名
- adb shell pm list packages | find "test" win 列出手机装带有的test的包
- adb shell pm list packages | grep ‘test’ linux 列出手机装带有的test的包
- adb shell pm clear cn.com.test.mobile #清除应用数据与缓存
- adb shell am
command 用途
start [options] <INTENT> 启动 <INTENT> 指定的 Activity
startservice [options] <INTENT> 启动 <INTENT> 指定的 Service
broadcast [options] <INTENT> 发送 <INTENT> 指定的广播
force-stop <packagename> 停止 <packagename> 相关的进程
<INTENT> 参数很灵活,和写 Android 程序时代码里的 Intent 相对应,用于决定 intent 对象的选项如下:
-a <ACTION> 指定 action,如android.intent.action.VIEW
-c <CATEGORY> 指定 category,如android.intent.category.APP_CONTACTS
-n <COMPONENT> 指定完整 component 名,用于明确指定启动哪个 Activity,如
com.example.app/.ExampleActivity
- 启动Activity
adb shell am start [options]
#指定完整 component 名,用于明确指定启动哪个Activity
$adb shell am start -n <COMPONENT>
如: #表示调起微信主界面
# adb shell am start 包名/完整Activity路径
$adb shell am start -n com.tencent.mm/.ui.LauncherUI
- 启动 Service
adb shell am startservice [options]
示例: 表示调起微信的某 Service。
$adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorS
- 发送广播
adb shell am startservice [options]
示例:
#向所有组件广播 BOOT_COMPLETED (开机广播)
$adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
#如:只向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 广播 BOOT_COMPLETED:
$adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemea
- adb shell am start -ncn.com.test.mobile/.ui.SplashActivity #启动应用
- adb shell dumpsys # 提供非常多的系统信息
- adb shell dumpsys package #包信息Package Information
- adb shell dumpsys meminfo #内存使用情况Memory Usage
- adb shell dumpsys window | findstr mCurrentFocus 获取当前包名和activity
- 查看实时资源占用情况 # 查看实时资源占用情况
adb shell top
top命令参数如下:
使用方法: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num 最多显示多少个进程
-n num 刷新多少次后退出
-d num 刷新时间间隔(单位秒,默认值 5)
-s col 按某列排序(可用 col 值:cpu, vss, rss, thr)
-t 显示线程信息
-h 显示帮助文档
- adb shell am force-stop cn.com.test.mobile #强制停止应用
- adb logcat #查看日志
- adb logcat -c #清除log 缓存
- adb reboot #重启
- adb bugreport 查看bug 报告
- adb get-serialno #获取序列号
- adb shell getprop ro.build.version.release #查看Android 系统版本
- adb shell top -s 10 #查看占用内存前10 的app
- adb push #从本地复制文件到设备
- adb pull #从设备复制文件到本地
- adb bugreport #查看bug报告
- adb help #查看ADB 帮助
- 使用ADB命令模拟按键/输入
adb shell input keyevent # keycode 能实现不同的功能,对应的编码如下
- IP 地址
adb shell ifconfig | find “Mask”
adb shell ifconfig wlan0 #设备连着 WiFi,可以使用如下命令来查看局域网 IP
adb shell netcfg # 上面两个无结果可以用这个,查看网络连接状态
- CPU 信息
adb shell cat /proc/cpuinfo
- 内存信息
adb shell cat /proc/meminfo
- 屏幕截图
adb exec-out screencap -p > img.png # 老版本无exec-out命令,只适合于新版的截图
adb shell screencap -p /sdcard/img.png # 老版本截图先保存在设备端
adb pull /sdcard/img.png # 通过pull拷贝到本地
参数 含义
-p 指定保存文件为 png 格式
-d display-id 指定截图的显示屏编号(有多显示屏的情况下)
- 录制屏幕
adb shell screenrecord /sdcard/filename.mp4 # 默认录制时间和最长录制时间都是180s
参数 含义
--size WIDTHxHEIGHT 视频的尺寸,比如 1280x720,默认是屏幕分辨率。
--bit-rate RATE 视频的比特率,默认是 4Mbps。
--time-limit TIME 录制时长,单位秒。
--verbose 输出更多信息
- 事件输入
使用adb shell input命令向屏幕输入一些信息,
adb shell input text "insert%stext%shere" # 注意:%s表示空格。
# 市面上输入法的底层就是监控input输入的字符
- 使用adb shell input tap命令来模拟屏幕点击事件
adb shell input tap 500 1450 # 表示在屏幕上(500,1450)的坐标点上进行一次点击
- adb shell input swipe # 模拟手势滑动事件
adb shell input swipe 100 500 100 1450 100 # 从屏幕坐标(100,500)开始,滑动到(100,1450)结束,整个过程耗时100ms
adb shell input swipe 100 500 100 500 500 # 使用上面的命令还可以模拟”**长按(long press)**操作,也就是2个坐标点相同,耗时超过500ms
- adb shell input keyevent # 命令来模拟点按实体按钮的命令
adb shell input keyevent 25