• 安装卸载应用程序

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
  1. 通过monkey日志查看
  2. 通过adb shell dumpsys package com.zhao.myreader 查看
  3. 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 的hjava SDK安装 adb install -s_包名

  • adb shell am start -ncn.com.test.mobile/.ui.SplashActivity #启动应用
  • adb shell dumpsys # 提供非常多的系统信息
  • ADB 的hjava SDK安装 adb install -s_ADB 的hjava SDK安装_02

  • 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 能实现不同的功能,对应的编码如下

ADB 的hjava SDK安装 adb install -s_android_03

  • 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