Android adb命令

adb 的源码路径: aosp/system/core/adb下的源码,查看Android.mk你将会发现adb和adbd其实是一份代码,然后通过宏来编译。


更多adb 命令: GitHub - mzlogin/awesome-adb: ADB Usage Complete / ADB 用法大全

Adb 大内容搜索方法  可以无限通用 替换红色部分内容

adb logcat -s ActivityManager | findstr Displayed   (获取系统当前显示APP包名与Main类)

表示过滤tag为ActivityManager的信息,Displayed为过滤log内容中含此字符中的信息


通过adb shell setprop修改system/build.prop 文件时,需要在重启系统。重启之前需要保证build.prop文件的权限为644,否则重启程序之后会出现问题。设置build.prop文件权限如下:

adb shell chmod 644 system/build.prop


研发中看手机是user版本还是userdebug或是eng版本

执行指令:

adb shell getprop ro.build.type


查看APP的CPU使用情况

adb shell dumpsys cpuinfo | findstr packagename

查看app的pid

[1]  adb shell ps | findstr  com.android.launcher3

[2] adb shell

ps -A| grep "packagename"

查看app的内存情况

adb shell dumpsys meminfo packagename


按照指定的进程名称进行过滤

(Windows bat)adb shell ps | findstr 进程名称

(Mac 终端)adb shell ps | grep 进程名称

adb shell ps pid -t显示该进程下的所有线程(windows 不可用)


亮屏

adb shell input keyevent 26

keyevent 26表示点击power

解锁

adb shell input swipe 500 50 500 700

swipe 表示滑动,从500,50滑动到500,700


android 11 R平台修改APP后编译生成的APK文件 push到手机内后,必须 adb shell stop && adb shell start 重启手机,如果你的手机没有OEM解锁的话,则不能adb reboot重启手机或是杀进程adb shell kill -9 appPID,

因为adb reboot重启手机未解决OEM锁的系统会自动复原到初始状态,

adb root;adb remount ;adb disable-verity;adb reboot;adb root;adb remount

adb shell stop;adb shell start;


统计APP的启动时间

C:\Users\User> adb shell am start -W -n  com.android.settings/.Settings
Starting: Intent { cmp=com.android.settings/.Settings }
Status: ok
Activity: com.android.settings/.Settings
ThisTime: 194
TotalTime: 194
WaitTime: 244
Complete

使用命令行方式统计多次启动某个Activity的平均用时可以在shell中执行如下指令:

adb shell am start -S -R 10 -W com.example.app/.MainActivity

其中-S表示每次启动前先强行停止,-R表示重复测试次数。每一次的输出如下所示信息。

Stopping: com.example.app
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.app/.MainActivity }
Status: ok
Activity: com.example.app/.MainActivity
ThisTime: 1059
TotalTime: 1059
WaitTime: 1073
Complete
其中TotalTime代表当前Activity启动时间,将多次TotalTime加起来求平均即可得到启动这个Activity的时间

没有在AndroidManifest.xml对应的Activity声明中指定

或者属性没有android:exported="true"的Activity不能使用这种命令行的形式计算启动时间。


查看被占用的端口
netstat -aon|findstr “端口”
查看占用端口的进程
tasklist |findstr “占用端口”

获取Activity信息:adb shell dumpsys activity
获取当前界面的UI信息,可以用:adb shell dumpsys activity top


通过包名查看某APP的安装目录

[1]方式1

adb shell dumpsys package packagename   输出信息中会包含如下信息:

path: /system/priv-app/Launcher2/Launcher2.apk

[2]方式2

adb shell pm am com.android.launcher3


adb shell命令查看当前与用户交互的activity:

2 :  adb shell dumpsys activity | grep -i Run

xxx:/ # dumpsys activity | grep -i Run
  service_reset_run_duration=60000
  #44: BroadcastRecord{f4f2edd u0 mediatek.intent.action.ACTION_START_RUNNING_BOOSTER}
    act=mediatek.intent.action.ACTION_START_RUNNING_BOOSTER flg=0x10 (has extras)
    Running activities (most recent first):
        Run #0: ActivityRecord{b0c00b1 u0 com.xxx.xxxx/.LauncherActivity t33}
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
    User #0: state=RUNNING_UNLOCKED

3   adb shell  dumpsys window| findstr mCurrentFocus  (推荐)

adb shell  dumpsys window| grep mCurrentFocus   [linux系统]

xxx:/ # dumpsys window|grep mCurrentFocus
  mCurrentFocus=Window{13ab91 u0 com.xxx.xxx/com.xxx.xxx.LauncherActivity}

      查看当前运行程序栈

4     adb shell“ dumpsys window windows | grep Window# " 

127|xxx:/ # dumpsys window windows | grep "Window #"
  Window #0 Window{8bc7cf6 u0 NavigationBar}:
  Window #1 Window{78eeb51 u0 StatusBar}:
  Window #2 Window{4ed6712 u0 AssistPreviewPanel}:
  Window #3 Window{4b9de84 u0 DockedStackDivider}:
  Window #4 Window{13ab91 u0 com.xxx.xxx/com.xxx.xxx.LauncherActivity}:


查看精简启动过程:adb logcat –b events | grep boot


adb shell mount -o remount,rw /system       //操作system分区只读写 


两个标签同时过滤adb 命令:  adb  shell "logcat |grep -e ActivityManager: -e WindowManager:"


// 获取 CPU 核心数,我的手机是8核

platina:/ $ cat /sys/devices/system/cpu/possible

0-7 

获取第一个 CPU 的最大频率

platina:/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

< 1843200

// 获取第二个CPU的最小频率

platina:/ $ cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq

< 633600


adb shell wm size 720x1280

这里要注意了乘号不是*,是x字母

 $ adb shell setprop config.override_forced_orient true
 $ adb shell wm size reset

adb shell wm density 打印屏幕密度

LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。
MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。
HDPI (High Density Screen, 240 DPI),其图标大小为 72 x 72 px。
xhdpi (Extra-high density screen, 320 DPI),其图标大小为 96 x 96 px。

Android adb命令_第1张图片


非root权限删除系统自带APP

adb shell pm uninstall [-k] [--user USER_ID] packname
eg:adb shell pm uninstall --user 0 com.huawei.browser
eg:adb shell pm install-existing --user 0 com.huawei.browser (恢复)

参数说明:

  • -k    卸载应用且保留数据与缓存,如果不加 -k 则全部删除。

  • --user 指定用户 id,Android 系统支持多个用户,默认用户只有一个,id=0。

    就此命令补充,在widnow DOS窗口中可以在非ROOT权限下顺利卸载系统自带APP (任何APP都可以卸载),多想:如何把这此命令打包进一个APP中,提供给任何人卸载他们手机系统的中自带APP,起不是爽歪歪,但在实现APP后才知道,在APP中执行此命令是没有同在windos dos中执行此命令相同的权限,原因如下:

Android adb命令_第2张图片


adb shell pm list package -3  该命令可以获取到设备中安装的第三方软件(自己安装的所有APP软件)


adb root
adb remount
adb push "mbn_file"  /system/etc/firmware/modem_config/xxxproject/
adb reboot

adb logcat -b radio -b main -c” 按回车,清空之前的log

adb logcat -c xxxx 清除之前tag为XXXX的日志信息

adb logcat -c -b main -b events -b radio -b system   清除之前log

adb logcat -b main -b system -b radio -v time >logcat.txt      

adb logcat -c -b main -b events -b radio -b system


adb shell ps -t 18446 //查看android某进程里的有哪些线程,如查看18446进程 (参数-t windows 不可用)

进入adb reboot recovery模式  直接清除数据(与恢复出厂设置一要)

进入强制刷机模式

adb reboot edl(高通平台适用命令)

打印手机TP坐标:

adb shell getevent

 adb logcat 命令A 同时过滤多个应用的Tag
语法:
adb logcat *:S TAG1 TAG2 TAG3  或   adb logcat -s TAG1 TAG2 TAG3

adb过滤多个字符串

adb logcat |grep -iE "Dialer|InCallUI|Telecom"   参数 i  忽略大小字

如果一台电脑连接多台手机,具体指定哪台手机重启需要指定设备号
adb -s device1 reboot
下面是关机命令
adb shell reboot -p

2. 查看指定包名的安装路径
root@wt89536:/ # pm path com.android.settings 

5.清除应用数据
root@wt89536:/ # pm clear com.android.fingerprint 

adb logcat -b main -v time>app.log  打印应用程序的 log

adb  shell   “getprop | grep sn” 属性搜索

adb logcat -b radio -v time> radio.log 打印射频相关的 log , SIM STK 也会在里面, modem 相关的 ATcommand 等,当然跟 QXDM 差的很远了。

adb logcat -b events -v time>events.log  打印系统事件的日志,比如触屏事件。

2. 查看指定包名的安装路径
root@wt89536:/ # pm path com.android.settings 

4.launcher上是否显示指定应用

 输入命令adb shell pm disable-user xxxxxx,停用APP。

输入命令adb shell pm enable XXXX 这是重新打开APP。


root@wt89536:/ # pm enable com.android.fingerprint 
Package com.android.fingerprint new state: enabled

root@wt89536:/ # pm unhide com.android.fingerprint 
Package com.android.fingerprint new hidden state: false

root@wt89536:/ # pm disable com.android.fingerprint 
Package com.android.fingerprint new state: disabled

root@wt89536:/ # pm hide com.android.fingerprint 
Package com.android.fingerprint new hidden state: true

5.清除应用数据
root@wt89536:/ # pm clear com.android.fingerprint 


adb shell录屏   参数: --time-limit

adb shell screenrecord  --time-limit 10 /sdcard/demo.mp4

说明:限制视频录制时间为10s,如果不限制,默认180s

截屏

adb shell screencap -p /sdcard/screen.png


1    用户空间的Log很简单了,大家都知道有个logcat命令,logcat的使用可参考logcat命令介绍。

 2   内核空间的Log所使用的命令为dmesg和cat /proc/kmsg

   Android的log信息分为内核空间和用户空间中LOG,查看用户空间(也就是app等上层的log)的log直接用logcat就可以了,如果想过滤一些信息就用adb shell "logcat | grep -E 'log_xxx|log_aaa'"命令,这样log只会显示含有log_aaa和log_xxx的log信息了。上层的log信息大家基本都会查看,我们这里就只说用adb查看内核的log信息,毕竟如果接个串口线来查看log,有时候确实麻烦。

1   可以执行adb shell 然后再执行dmesg命令可以查看全部消息。如果想把log信息保存到文件,可以用adb shell dmesg >D:/Kernel.log.

2  或者是 adb shell 然后执行 cat /proc/kmsg。


如部分平板系统预装拨号盘如何打开MTKlog

adb shell am start -n com.mediatek.mtklogger/com.mediatek.mtklogger.MainActivity

开机同时按住:Power + Volume-    进入工厂测试模式

mediatek/packages/apps/EngineerMode   //工厂测试模式APP源码位置

查看ip地址:adb shell ifconfig

adb logcat -b main -v time>app.log    打印应用程序的 log

adb shell  “getprop | grep sn” 属性搜索 


adb logcat -b radio -v time> radio.log 打印射频相关的 log , SIM STK 也会在里面, modem 相关的 ATcommand 等,当然跟 QXDM 差的很远了。

adb logcat -b events -v time>events.log 打印系统事件的日志,比如触屏事件。。。

3、Modem log 是手机里负责搜网和sim卡数据操作底层模块, 。

获取序列号:  adb get-serialno

查看连接计算机的设备:  adb devices

重启机器:  adb reboot

刷机模式:  adb reboot bootloader

重启到recovery,即恢复模式:  adb reboot recovery

查看log:  adb logcat

终止adb服务进程:  adb kill-server

重启adb服务进程:  adb start-server

获取机器MAC地址:  adb shell  cat /sys/class/net/wlan0/address

获取CPU序列号: adb shell cat /proc/cpuinfo

安装APK: adb install //比如:adb install baidu.apk 保留数据和缓存文件,

强制安装apk: adb install -r //比如:adb install -r baidu.apk

安装apk到sd卡: adb install -s // 比如:adb install -s baidu.apk

卸载APK: adb uninstall //比如:adb uninstall com.baidu.search

卸载app但保留数据和缓存文件: adb uninstall -k //比如:adb uninstall -k com.baidu.search

启动应用: adb shell am start -n /.

启用Service 

adb shell
am startservice --user 0 -n com.example.androidtestproject/com.example.androidtestproject.NoActivityService
Starting service: Intent { cmp=com.example.androidtestproject/.NoActivityService }
Error: Requires permission not exported from uid 10079
//未获取root权限,提示权限不足
127|_v4:/ $ su root
x20l_v4:/ # am startservice --user 0 -n com.example.androidtestproject/com.example.androidtestproject.NoActivityService
Starting service: Intent { cmp=com.example.androidtestproject/.NoActivityService }

停止Service

adb shell
am stopservice --user 0 com.example.androidtestproject/.NoActivityService

  b、查看进程信息

  ------ CPU INFO (top -n 1 -d 1 -m 30 -t) ------

  能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器

查看设备cpu和内存占用情况: adb shell top

查看占用内存前6的app: adb shell top -m 6 刷新一次内存信息,然后返回: adb shell top -n 1

查询各进程内存使用情况: adb shell procrank  // 查单独某APP + | findstr packagename

杀死一个进程: adb shell kill  [pid] 或者是 adb shell kill -9 pid

当一个进程发生ANR时,退出停顿则使用 adb shell kill -3 pid   则会生成此次ANR的traces.txt  //data/anr/traces.txt

查看进程列表: adb shell ps

查看指定进程状态: adb shell ps -x [PID]

查看后台services信息: adb shell service list

查看某services 是否正常运行中

C:\Users\User>adb shell
xxx:/ $ dumpsys activity services | grep FmService  (FmService为你要查找到的service名即程序中的Service类)
  * ServiceRecord{eab1542 u0 com.android.fmradio/.FmService}
    intent={cmp=com.android.fmradio/.FmService}
      intent={cmp=com.android.fmradio/.FmService}

(如果此service正在运行中,则会有上面的输出信息,如service忆停止运行,则无信息输出)
xxx:/ $ dumpsys activity services | grep FmService
1|xxx:/ $
1|xxx:/ $ dumpsys activity services | grep FmService
1|xxx:/ $ dumpsys activity services | grep FmService
1|xxx:/ $

查看当前内存占用: adb shell cat /proc/meminfo

查看IO内存分区: adb shell cat /proc/iomem

将system分区重新挂载为可读写分区: adb remount

从本地复制文件到设备: adb push

从设备复制文件到本地: adb pull  

列出目录下的文件和文件夹,等同于dos中的dir命令: adb shell ls 进入文件夹,等同于dos中的cd 命令: adb shell cd

重命名文件: adb shell rename path/oldfilename path/newfilename

删除system/avi.apk: adb shell rm /system/avi.apk

删除文件夹及其下面所有文件: adb shell rm -r

移动文件: adb shell mv path/file newpath/file

设置文件权限: adb shell chmod 777 /system/fonts/DroidSansFallback.ttf

新建文件夹: adb shell mkdir path/foldelname

查看文件内容: adb shell cat

查看wifi密码: adb shell cat /data/misc/wifi/*.conf

清除log缓存: adb logcat -c

查看bug报告: adb bugreport 获取设备名称: adb shell cat /system/build.prop

查看ADB帮助: adb help

跑monkey: adb shell monkey -v -p your.package.name 500

进入强制刷机模式 adb reboot edl

打印手机TP坐标: adb shell getevent


adb shell iptables -L -n  查看iptables 链规则


adb 无线调试 具体步骤如下

先借助adb命令在手机上开启无线连接的服务: 
使用数据线通过USB接口将手机与电脑连接,在cmd中执行如下命令: 
【1】

adb tcpip 5555(PS:5555是端口号,可以随意地指定) 
执行该命令后如下图所示: 
 è¿éåå¾çæè¿°
【2.1】查看手机端的IP地址,可以通过查看【设置】-【关于手机】查看手机的IP地址,也可在adb中执行以下命令,查看连接的手机IP地址

adb shell ipconfig wlan0

【2.2】电脑端执行连接命令: 
首先要查找到手机的IP地址,比如我的是192.168.1.41,然后执行连接命令: 
adb connect 192.168.1.41:5555 
命令执行完后就已连接成功后即可断开USB数据线开始无线高度了,在cmd中执行adb shell命令测试一下啦!


adb shell settings get global auto_time

adb shell settings get secure default_input_method

adb shell settings get system screen_brightness

adb shell settings put global auto_time 0

使用 adb shell lpdump查看各分区的大小,此命令与adb shell -->df -h 不同

C:\Users\User>adb shell lpdump
Metadata version: 10.0
Metadata size: 516 bytes
Metadata max size: 65536 bytes
Metadata slot count: 2
Partition table:
------------------------
  Name: vendor
  Group: main
  Attributes: readonly
  Extents:
    0 .. 341831 linear super 2048
------------------------
  Name: product
  Group: main
  Attributes: readonly
  Extents:
    0 .. 1859615 linear super 344064
------------------------
  Name: system
  Group: main
  Attributes: readonly
  Extents:
    0 .. 1267471 linear super 2205696
 

你可能感兴趣的:(易忘记,android,sqlite,1024程序员节)