Home

Awesome

AdbCommand

Adb各种实用命令收集

若连接多台使用adb -s操作。 windows下使用findstr,linux和mac下使用grep。

通过无线连接ADB:

通过配对码连接ADB:

以root方式执行shell命令:

Read-only file system时以可读写方式执行:

如果结果太长可以保存到文件中,如:

设备连接操作:

adb关闭:

adb kill-server

adb开启:

adb start-server

adb设备查看:

adb devices

adb查看手机网络

adb shell ifconfig wlan0

从电脑上传文件到手机上:

adb push /Users/caochang/apk/BBox.apk /sdcard/xbd/BBox.apk

从手机上发送文件到电脑上:

adb pull /sdcard/xbd/BBox.apk /Users/caochang/apk/BBox.apk

获取系统参数:

输出设备信息到文件:

adb shell getprop > info.txt

获取IMEI:

adb shell dumpsys iphonesubinfo

获取手机品牌:

adb shell getprop ro.product.brand

获取手机型号:

adb shell getprop ro.product.model

获取手机系统SDK版本号:

adb shell getprop ro.build.version.sdk

获取Android系统版本号:

adb shell getprop ro.build.version.release

获取手机分辨率:

adb shell wm size

修改手机分辨率:

adb shell wm size 1080*1920

获取手机dpi:

adb shell wm density

修改手机dpi:

adb shell wm density 480

获取手机cpu架构:

adb shell getprop ro.product.cpu.abilist(Android5.0系统之后)
adb shell getprop ro.product.cpu.abi(Android5.0系统之前)

获取手机mac:

adb shell cat /sys/class/net/eth0/address(网卡一)
adb shell cat /sys/class/net/wlan0/address(无线网卡)

获取deviceId:

adb shell settings get secure android_id
adb shell content query --uri content://settings/secure/android_id --projection value

查看系统支持的编解码器:

adb shell system/etc/media_codecs.xml
adb shell cat /etc/media_codecs.xml | grep -i "hevc"(查看是否支持h265)

开发者选项

获取开发者选项值
adb shell settings get global development_settings_enabled
打开开发者选项
adb shell settings put global development_settings_enabled 1
关闭开发者选项
adb shell settings put global development_settings_enabled 0

adb调试

获取adb调试值
adb shell settings get global adb_enabled
打开adb调试
adb shell settings put global adb_enabled 1
关闭adb调试
adb shell settings put global adb_enabled 0

系统设置相关:

获取屏幕休眠时间:

adb shell settings get system screen_off_timeout

设置屏幕休眠时间(ms):

adb shell settings put system screen_off_timeout 60000

查看默认短信应用:

adb shell settings get secure sms_default_application

修改默认短信应用:

adb shell settings put secure sms_default_application com.carlos.sms

获取屏幕熄灭状态:

adb shell "dumpsys window policy | grep mScreenOnFully" <br> adb shell dumpsys power | findstr "Display Power:state="

查看系统属性

adb shell cat /system/build.prop
heapgrowthlimit:普通应用内存限制,对应ActivityManager.getMemoryClass()方法获取的值
heapsize:manifest中设置了largeHeap=true之后,可以使用的最大内存值,对应ActivityManager.getLargeMemoryClass()方法获取的值

查看系统虚拟机类型

adb shell getprop persist.sys.dalvik.vm.lib
若值为libdvm.so则为dalvik,libart.so则为art

查看设置相关属性

Android4.4目录下,相关路径data/data/com.android.providers.settings/databases/settings.db,可以打开数据库查看
Android7.x目录下,相关路径data/system/users/0,路径下settings_secure.xmlsettings_system.xmlsettings_global.xml文件
获取值

adb shell settings get system [key]   
adb shell settings get global [key]   
adb shell settings get secure [key]   

设置值

adb shell settings put secure [key] [value]   
...

如,获取定义按转为长按之前的默认持续时间(毫秒):adb shell settings get secure long_press_timeout

移除属性值

adb shell setprop persist.sys.theme ""

性能相关:

冷热启动耗时时间:

adb shell am start      
    -W: wait for launch to complete    
    -S: force stop the target app before starting the activity 

adb shell am start -W com.UCMobile/com.uc.browser.InnerUCMobile
在AS中可过滤displayed输出的启动日志

应用cpu占用率:

adb shell dumpsys cpuinfo| find "com.sec.android.app.launcher"

应用memory:

adb shell "dumpsys meminfo | grep com.carlos.bbox

通过包名获取pid:

adb shell "ps | grep com.aspire.agent" 得到结果第二列的值为pid

通过pid获取uid:

adb shell cat /proc/6094/status

通过uid获取上行流量:

adb shell "cat /proc/uid_stat/10189/tcp_snd"

通过uid获取下行流量:

adb shell "cat /proc/uid_stat/11110/tcp_rcv"

导出crash日志:

adb shell dumpsys dropbox --print >>crashlog_$(date +%Y%m%d%H%M).txt

查看meminfo内容

adb shell cat /proc/meminfo

通过pid模拟杀进程

adb shell kill -9 6094

应用相关:

显示已安装应用:

adb shell pm list packages [-com.carlos.bbox]

清除应用数据:

adb shell pm clear com.carlos.bbox

卸载应用:

adb uninstall com.carlos.bbox

卸载系统应用

adb shell pm uninstall -k --user 0 com.carlos.test

显式安装应用:

adb install (-r强制安装) /Users/caochang/apk/BBox.apk

隐式安装应用:

adb shell pm install (-r) /sdcard/xbd/BBox.apk

无弹框安装应用:

adb install-multiple -r /Users/caochang/apk/BBox.apk

发送广播:

adb shell am broadcast -a com.carlos.bbox -e port 8888

启动服务:

adb shell am startservice com.carlos.bbox/com.carlos.bbox.MyService

启动应用:

adb shell am start -n com.carlos.bbox/.MainActivity
adb shell am start -n com.test.app/com.test.TestActivity -d test://com.test.app/test?testId=13
启动带参数:

-a action;activity对应的action;
--es key stringValue; 传递 String 参数;
--ez key booleanValue; 传递 Boolean 参数;
--ei key intValue; 传递 int 参数;
--el key longValue; 传递 long 参数;
--ef key floatValue; 传递 float 参数;

停止应用:

adb shell am froce-stop com.carlos.bbox

查看顶层Activity类名:

查看当前界面的信息

adb shell dumpsys window | grep mCurrentFocus

Activity信息和View Hierarchy:

adb shell dumpsys activity top

查看是否已安装该应用

adb sehll pm list packages | grep "com.carlos.test"

查看已经安装的包名对应的apk路径:

adb shell pm path com.carlos.grabredenvelope

导出已安装的APK:

adb pull /data/app/com.example.carlos.myapplication--y9EFnP-__j34XhQxIwXvA==/base.apk(找到的apk路径)

当前栈顶的Activity信息输出到文件

adb shell dumpsys activity top > info.txt

Monkey相关:

点击应用1000次:

adb shell monkey -p com.codemao.dan -v 1000

每隔1s点一次:

adb shell monkey -p com.codemao.dan --throttle 1000 20

操控手机相关:

点击坐标点:

adb shell input tap 250 250

输入文本

adb shell input text hello world

截图:

adb shell screencap -p /sdcard/a.png

录屏

adb shell screenrecord /sdcard/test.mp4

调试相关

日志

输出日志

adb logcat -v thradtime > log.txt

清空日志

adb logcat -c

查看日志缓冲区大小

adb logcat -g

修改日志缓冲区大小

adb logcat -G 2MB

启动浏览器

adb shell am start -a android.intent.action.VIEW -d "https://www.baidu.com"

抓网络包保存至SD卡

adb shell tcpdump -i any -p -s 0 -w /sdcard/11.pcap

可以通过adb直接拦截某个服务器的请求,可用于测试异常情况,ACCEPT放通,DROP封堵

Ipv4封堵:
iptables -I INPUT -s 192.168.1.138 -j DROP
Ipv4解除:
iptables -I INPUT -s 192.168.1.138 -j ACCEPT
​ Ipv6封堵:
ip6tables -I INPUT -s 1050:0000:0000:0000:0005:0600:300c:326b -j DROP
Ipv6解除:
ip6tables -I INPUT -s 1050:0000:0000:0000:0005:0600:300c:326b -j ACCEPT

TV抓包

Charles抓包,针对Lancher未提供设置网络代理和打开浏览器功能,使用adb来打开原生设置网络代理安装证书

adb shell am start -a android.settings.SETTINGS
adb shell am start com.android.settings/com.android.settings.Settings
adb shell input text 172.17.5.166
adb shell am start com.android.browser/com.android.browser.BrowserActivity
adb shell input text chls.pro/ssl

找到了更加快捷的做法,直接adb设置代理,如:

adb shell settings put global http_proxy 127.0.0.1:8888

adb清除代理:

adb shell settings put global http_proxy :0

Charles清除代理三种方式

TV抓包

模拟按键上下

adb shell input keyevent KEYCODE_DPAD_UP
adb shell input keyevent KEYCODE_DPAD_DOWN

开发者选项

打开/关闭布局边界

adb shell setprop debug.layout true 
adb shell setprop debug.layout false 

立即生效
adb shell service call activity 1599295570

View Server

查看是否开启命令:

adb shell service call window 3<br> 返回值是:Result: Parcel(00000000 00000000 '........')" 说明View Server处于关闭状态<br> 返回值是:Result: Parcel(00000000 00000001 '........')" 说明View Server处于开启状态

打开View Server:

adb shell service call window 1 i32 4939

关闭View Server:

adb shell service call window 2 i32 4939

Android工程模式拨号指令

进入工程模式选项

查看设备信息

查询手机串号(IMEI)

*#06#

其他

首先进入操作系统的拨号界面,输入指令码即可快速进入Android的工程测试模式。

常见机型进入工程模式的指令码是:

各种手机日志开启方法

其他

列举可以被调试的pid(进程id)

adb jdwp

通过脚本下载Android源码

其他问题

adb pull data/data下文件失败

在某些手机上进入到package文件夹下执行ls命令会出现以下问题,参考链接:opendir failed, Permission denied

opendir failed, Permission denied

此时,可先run-as your-package命令,如

run-as com.carlos.test

adb pull data/anr失败

 remote open failed: Permission denied

可用adb bugreport命令在当前路径下生成压缩包分析,参考链接:调试系列2:bugreport实战篇

adb端口占用