文章大纲
- 引言
- 一、ADB
- 二、adb shell am
- 三、adb shell pm
- 四、adb shell dumpsys
- 五、抓取调试日志和堆栈信息
- 六、adb 模拟按键输入事件
- 七、grep 和find 协助筛选
- 八、adb shell 查看系统相关信息
- 1.1、adb shell cat /proc/meminfo 查看内存信息
- 1.2、adb shell cat /proc/cpuinfo 查看CPU 相关信息
- 1.3、adb shell cat /proc/pid 查看进程相关信息
- 1.4、adb shell getprop ro.build.version.release 查看系统版本
- 1.5、adb shell wm density 查看设备屏幕密度
- 1.6、adb shell ip route show table main 查看main 路由表
- 1.7、adb shell ifconfig 查看IP信息
- 1.8、adb shell cat /system/build.prop 查看硬件属性
- 9、adb shell dumpsys package < packagename > | grep userId= 查看进程UUID
- 10、adb shell ps查看正在运行的进程
- 11、adb 查看SIGNAL
- 12、adb 操作Android SystemProperties
引言
作为Android 开发,尤其是Framework 调优定制开发,ADB 作为一款调试调优的利器都应该掌握,这篇文章好好总结下常用的指令
一、ADB
1、ADB 概述
ADB 全称为Android Debug Bridge,翻译过来为Android调试桥梁,主要用于连接服务端(Android设备)与客户端(发出adb指令的终端)。Android的初衷是用adb这样的一个命令行工具使得开发者在开发android应用的过程中更快更好的调试apk,adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能。
Android SDK 在platform-tools目录下自带adb命令行工具。
2、ADB 架构概述
ADB 基于常见的C/S架构,主要由三大组件构成:
-
adb 客户端——运行于开发PC系统中通过命令行发出adb 指令,执行DDMS时也会启动一个
adb client
。当命令行从shell或脚本中运行adb命令时,ADB程序
首先尝试找到PC上的adb server
,如果找不到,ADB程序
自动启动一个adb server
,在设备的adbd
和PC端的adb server
建立连接后,adb client就可以向adb servcer
发送服务请求,进程名为adb。所有 adb 客户端均通过端口 5037与 adb server通信
-
adb 服务端——以后台进程的形式运行于开发PC系统中,用于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,
adb server
还需要将adb client的请求(即adb 指令)通过usb或者tcp的方式发送到对应的adbd 进程上,进程名为adb。有两种方式可以连接到Android设备:
- 通过USB 线物理直连,则adb 指令通过usb方式发送到adbd 进程
- 通过adb connect ip 无线局域网逻辑连接,则adb 指令通过TCP方式发送到adbd进程
-
守护进程(adbd)——即adb start-server 启动adb 时显示的运行在设备端的常驻进程daemon,进程adbd作为一个后台进程在Android设备中运行,负责连接adb server并响应运行在PC的客户端。
tmp\home_2247> adb start-server * daemon not running; starting now at tcp:5037 * daemon started successfully
当您启动某个 adb client时,它会先检查是否有 adb server进程正在运行。如果没有则会先启动server进程,server在启动后就与本地 TCP 端口 5037 绑定并监听 adb 客户端发出的命令。接着server会与所有正在运行的设备建立连接,通过扫描TCP端口 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口来查找模拟器。server一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接。
请注意每个模拟器都使用一对按顺序排列的端口:用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口,例如:
- 模拟器 1,控制台:5554 vs 模拟器 1,adb:5555
- 模拟器 2,控制台:5556 vs 模拟器 2,adb:5557
在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
3、ADB 的基本操作
3.1、ADB 的启动和关闭
- adb start-server 启动adb
- adb kill-server 关闭adb,有时候adb 无效了,你可以通过kill掉再start操作一下。
3.2、指定特定的目标设备
如果有多个设备/模拟器连接,则需要为命令指定目标设备,可以通过 adb [-d|-e|-s ]
再接指令,比如adb -s 22529b7a install -r xxx.apk
参数 | 含义 |
---|---|
-d | 指定当前唯一通过 USB 连接的 Android 设备为命令目标 |
-e | 指定当前唯一运行的模拟器为命令目标 |
-s serial_number | 指定相应 serial_number号的设备/模拟器为命令目标 |
可以通过adb devices 查看对应的serial_number,格式为 [serial_number] [state],其中state取值:
offline —— 表示设备未连接成功或无响应。
device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。
no device —— 没有设备/模拟器连接。
3.3、指定adb server的通信端口
默认的端口为5037 或者5555,视adb 版本而定,可以手动通过 adb -P < port > start-server
指定端口
二、adb shell am
adb shell am <command>
本质上就是通过命令行的形式使用AMS服务,常见command 命令有:
command | 说明 |
---|---|
start [options] < INTENT > | 启动 < INTENT > 指定的 Activity |
startservice [options] < INTENT > | 启动 < INTENT > 指定的 Service |
broadcast [options] < INTENT > | 发送 < INTENT > 指定的广播 |
force-stop < INTENT > | 停止 < INTENT > 相关的进程 |
常见的options选项:
参数 | 说明 |
---|---|
-a | 指定 action,比如 android.intent.action.VIEW |
-c | 指定 category,比如 android.intent.category.APP_CONTACTS |
-n | 指定完整 component 名,用于明确指定启动哪个 Activity |
就像写代码时的 Bundle 一样,INTENT
里也还能带数据
1、adb shell am start启动指定Activity
- adb shell am start -n com.android.settings/com.android.settings.Settings
- adb shell am start -n com.crazyai.aivoiceserver/com.crazyai.aivoiceserver.MainActivity
- adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings
- adb shell am start -n com.crazyai.aivoiceserver/.MainActivity --es “toast” “hello, world”
2、adb shell am startService启动指定Service
adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
3、adb shell am broadcast 发送广播
- adb shell am broadcast -a android.intent.action.BOOT_COMPLETED 向所有组件广播
- adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.crazyai.aivoiceserver/.BootCompletedReceiver 只向所有组件com.crazyai.aivoiceserver/.BootCompletedReceiver广播
4、adb shell am force-stop 强制停止指定应用
三、adb shell pm
adb shell pm
本质上就是通过命令行的形式使用PMS服务,通用格式:
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [–user USER_ID] [FILTER]
参数 | 显示列表 |
---|---|
无 | 所有应用 |
-f | 显示应用关联的 apk 文件 |
-d | 只显示 disabled 的应用 |
-e | 只显示 enabled 的应用 |
-s | 只显示系统应用 |
-3 | 只显示第三方应用 |
-i | 显示应用的 installer,安装来源 |
-u | 包含已卸载应用 |
FILTER | 包名包含 FILTER 字符串 |
1、adb shell pm list packages 查看本机所有进程包名
- adb shell pm list packages -s 只显示本机所有系统应用的包名
- adb shell pm list packages -s 只显示本机所有第三方应用的包名
- adb shell pm list packages crazyai 或者 adb shell pm list packages | grep crazyai 显示本机应用的包名中包含crazyai 的所有包名
2、输出和安装包相关联的文件
adb shell pm list packages -f
- 输出本机启用的包 adb shell pm list packages -e
- 输出本机禁用的包 adb shell pm list packages -d
3、输出包和安装信息(安装来源)
adb shll pm list packages -i
4、adb shell pm dump 打印APK 的信息
adb shell pm dump com.crazyai.aivoiceserver | grep version
四、adb shell dumpsys
1、adb shell dumpsys activity 查看Activity、Service 信息
- adb shell dumpsys activity activities 查看所有Activities信息
- adb shell dumpsys activity | findstr “mFocusedActivity” 查看当前Activity
- adb shell dumpsys activity services [ packagename ] 参数不是必须的,指定
packagename
表示查看与某个包名相关的 Services,不指定表示查看所有 Services;packagename
只给出部分包名则会模糊匹配。
2、adb shell dumpsys window 查看Window信息
- adb shell dumpsys window windows | grep mFocusedApp 查看当前window
- adb shell dumpsys window windows | findstr mFocusedApp 查看当前window
- adb shell dumpsys window displays 查看显示屏的具体参数
3、adb shell dumpsys package 查看应用的详细信息
- adb shell dumpsys package < packagename > 查看应用详细信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等
4、adb shell dumpsys battery 查看设备电池信息
五、抓取调试日志和堆栈信息
1、logcat 查看aplog
-
adb shell logcat -v time > C:\Users\Administrator\Desktop\logcat.txt
-
adb pull < 设备里的文件路径 > <电脑上的目录>
-
adb push <电脑上的文件路径> <设备里的目录>
-
打印默认日志数据——adb logcat
-
需要打印日志详细时间的简单数据——adb logcat -v time
-
只打印指定级别的日志——只打印级别为Error的日志信息,adb logcat *:E
-
需要打印时间和级别是Error的信息——adb logcat -v time *:E
-
将日志保存到电脑固定的位置——adb logcat -v time >D:\log.txt
grep 过滤筛选指定条件的日志
- adb logcat | grep “MyApp”
- adb logcat | find “ExternalStorage”
2、adb shell debuggerd -b pid 获取堆栈信息
展示的是指定进程里的线程堆栈信息,前面是线程名称,sysTid为进程/线程Id,pc代表PC 计数器,括号内为函数入口地址的偏移量等等。
----- pid 3250 at 2021-01-08 14:11:29 -----
Cmd line: com.crazyai.aivoiceserver
ABI: 'arm64'
"y.aivoiceserver" sysTid=3250
#00 pc 00000000000685d0 /system/lib64/libc.so (__epoll_pwait+8)
#01 pc 000000000001f500 /system/lib64/libc.so (epoll_pwait+48)
#02 pc 0000000000015c1c /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+144)
#03 pc 0000000000015b04 /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+108)
#04 pc 000000000011245c /system/lib64/libandroid_runtime.so (_ZN7androidL38android_os_MessageQueue_nativePollOnceEP7_JNIEnvP8_jobjectli+44)
#05 pc 00000000007d3c5c /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.app.NativeActivity.onWindowFocusChangedNative [DEDUPED]+140)
#06 pc 0000000000f83198 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.MessageQueue.next+216)
#07 pc 0000000000f7cf08 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.Looper.loop+504)
#08 pc 00000000006b6cb8 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.app.ActivityThread.main+904)
#09 pc 0000000000506e38 /system/lib64/libart.so (art_quick_invoke_static_stub+600)
#10 pc 00000000000d804c /system/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+260)
#11 pc 000000000042f90c /system/lib64/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+104)
#12 pc 0000000000431464 /system/lib64/libart.so (_ZN3art12InvokeMethodERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectS4_S4_m+1460)
#13 pc 00000000003bb318 /system/lib64/libart.so (_ZN3artL13Method_invokeEP7_JNIEnvP8_jobjectS3_S3_+52)
#14 pc 0000000000266f74 /system/framework/arm64/boot.oat (offset 0x1db000) (java.lang.Class.getDeclaredMethodInternal [DEDUPED]+180)
#15 pc 00000000016aa5e8 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (com.android.internal.os.Zygote$MethodAndArgsCaller.run+136)
#16 pc 00000000016ae3f4 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (com.android.internal.os.ZygoteInit.main+2884)
#17 pc 0000000000506e38 /system/lib64/libart.so (art_quick_invoke_static_stub+600)
#18 pc 00000000000d804c /system/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+260)
#19 pc 000000000042f90c /system/lib64/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+104)
#20 pc 000000000042f568 /system/lib64/libart.so (_ZN3art17InvokeWithVarArgsERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectP10_jmethodIDSt9__va_list+424)
#21 pc 0000000000346160 /system/lib64/libart.so (_ZN3art3JNI21CallStaticVoidMethodVEP7_JNIEnvP7_jclassP10_jmethodIDSt9__va_list+624)
#22 pc 00000000000b56c4 /system/lib64/libandroid_runtime.so (_ZN7_JNIEnv20CallStaticVoidMethodEP7_jclassP10_jmethodIDz+120)
#23 pc 00000000000b7760 /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime5startEPKcRKNS_6VectorINS_7String8EEEb+816)
#24 pc 0000000000002454 /system/bin/app_process64 (main+1348)
#25 pc 000000000001b66c /system/lib64/libc.so (__libc_init+88)
#26 pc 0000000000001e70 /system/bin/app_process64 (do_arm64_start+80)
"Profile Saver" sysTid=3311
#00 pc 000000000001d8ec /system/lib64/libc.so (syscall+28)
#01 pc 00000000000e1a48 /system/lib64/libart.so (_ZN3art17ConditionVariable16WaitHoldingLocksEPNS_6ThreadE+152)
#02 pc 000000000030904c /system/lib64/libart.so (_ZN3art12ProfileSaver3RunEv+352)
#03 pc 000000000030afb8 /system/lib64/libart.so (_ZN3art12ProfileSaver21RunProfileSaverThreadEPv+88)
#04 pc 0000000000065f88 /system/lib64/libc.so (_ZL15__pthread_startPv+36)
#05 pc 000000000001ed24 /system/lib64/libc.so (__start_thread+68)
"MoHandlerThread" sysTid=3323
#00 pc 00000000000685d0 /system/lib64/libc.so (__epoll_pwait+8)
#01 pc 000000000001f500 /system/lib64/libc.so (epoll_pwait+48)
#02 pc 0000000000015c1c /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+144)
#03 pc 0000000000015b04 /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+108)
#04 pc 000000000011245c /system/lib64/libandroid_runtime.so (_ZN7androidL38android_os_MessageQueue_nativePollOnceEP7_JNIEnvP8_jobjectli+44)
#05 pc 00000000007d3c5c /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.app.NativeActivity.onWindowFocusChangedNative [DEDUPED]+140)
#06 pc 0000000000f83198 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.MessageQueue.next+216)
#07 pc 0000000000f7cf08 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.Looper.loop+504)
#08 pc 0000000000bffbbc /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.HandlerThread.run+620)
#09 pc 0000000000506b84 /system/lib64/libart.so (art_quick_invoke_stub+580)
#10 pc 00000000000d8010 /system/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+200)
#11 pc 000000000042f90c /system/lib64/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+104)
#12 pc 0000000000430a98 /system/lib64/libart.so (_ZN3art35InvokeVirtualOrInterfaceWithJValuesERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectP10_jmethodIDP6jvalue+432)
#13 pc 0000000000456dbc /system/lib64/libart.so (_ZN3art6Thread14CreateCallbackEPv+1140)
#14 pc 0000000000065f88 /system/lib64/libc.so (_ZL15__pthread_startPv+36)
#15 pc 000000000001ed24 /system/lib64/libc.so (__start_thread+68)
"Binder:3250_5" sysTid=17822
#00 pc 00000000000686bc /system/lib64/libc.so (__ioctl+4)
#01 pc 0000000000023ed0 /system/lib64/libc.so (ioctl+132)
#02 pc 0000000000061aa8 /system/lib64/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+256)
#03 pc 0000000000061c18 /system/lib64/libbinder.so (_ZN7android14IPCThreadState20getAndExecuteCommandEv+24)
#04 pc 00000000000622e8 /system/lib64/libbinder.so (_ZN7android14IPCThreadState14joinThreadPoolEb+60)
#05 pc 0000000000083944 /system/lib64/libbinder.so (_ZN7android10PoolThread10threadLoopEv+24)
#06 pc 000000000001160c /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+280)
#07 pc 00000000000b7a5c /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+136)
#08 pc 0000000000065f88 /system/lib64/libc.so (_ZL15__pthread_startPv+36)
#09 pc 000000000001ed24 /system/lib64/libc.so (__start_thread+68)
"VBOT#WakeupComm" sysTid=32359
#00 pc 00000000000685d0 /system/lib64/libc.so (__epoll_pwait+8)
#01 pc 000000000001f500 /system/lib64/libc.so (epoll_pwait+48)
#02 pc 0000000000015c1c /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+144)
#03 pc 0000000000015b04 /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+108)
#04 pc 000000000011245c /system/lib64/libandroid_runtime.so (_ZN7androidL38android_os_MessageQueue_nativePollOnceEP7_JNIEnvP8_jobjectli+44)
#05 pc 00000000007d3c5c /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.app.NativeActivity.onWindowFocusChangedNative [DEDUPED]+140)
#06 pc 0000000000f83198 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.MessageQueue.next+216)
#07 pc 0000000000f7cf08 /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.Looper.loop+504)
#08 pc 0000000000bffbbc /system/framework/arm64/boot-framework.oat (offset 0x5f0000) (android.os.HandlerThread.run+620)
#09 pc 0000000000506b84 /system/lib64/libart.so (art_quick_invoke_stub+580)
#10 pc 00000000000d8010 /system/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+200)
#11 pc 000000000042f90c /system/lib64/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+104)
#12 pc 0000000000430a98 /system/lib64/libart.so (_ZN3art35InvokeVirtualOrInterfaceWithJValuesERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectP10_jmethodIDP6jvalue+432)
#13 pc 0000000000456dbc /system/lib64/libart.so (_ZN3art6Thread14CreateCallbackEPv+1140)
#14 pc 0000000000065f88 /system/lib64/libc.so (_ZL15__pthread_startPv+36)
#15 pc 000000000001ed24 /system/lib64/libc.so (__start_thread+68)
----- end 3250 -----
3、adb bugreport 获取完整异常报告信息
执行adb bugreport
后会在当前路径下生成一个异常报告压缩包(保存着所有进程的堆栈快照),文件名以bugreport_开头。
4、adb shell dmesg 获取内核日志
六、adb 模拟按键输入事件
Usage: input [] […]
The sources are:
dpad
keyboard
mouse
touchpad
gamepad
touchnavigation
joystick
touchscreen
stylus
trackballThe commands and default sources are:
text (Default: touchscreen)
keyevent [–longpress] … (Default: keyboard)
tap (Default: touchscreen)
swipe [duration(ms)] (Default: touchscreen)
draganddrop [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll (Default: trackball)
keycode | 含义 |
---|---|
3 | HOME 键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
24 | 增加音量 |
25 | 降低音量 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移动光标到行首或列表顶部 |
123 | 移动光标到行末或列表底部 |
126 | 恢复播放 |
127 | 暂停播放 |
164 | 静音 |
176 | 打开系统设置 |
187 | 切换应用 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
210 | 打开计算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有 wakelock 则让系统休眠 |
// 左移
adb shell input keyevent 22
// 确认 “回车”
adb shell input keyevent 66
adb shell input keyevent 26
db shell input keyevent 3
db shell input keyevent 4
//在焦点处于某文本框时,可以通过 input 命令来输入文本
adb shell input text hello
七、grep 和find 协助筛选
1、grep 查找文件里的内容
-
grep -r -n “files_activity” ./frameworks/
-
grep -r -n “com.android.mtp.documents” ./mojf/aibox/
-
find . -name “*.cpp” | xargs grep -i $1
1.1、或的关系
-
grep -E “key1|key2|key3…keyn” files
-
grep -E “key1|key2|key3…keyn” dirpath
1.2、且的关系
-
grep key1 | grep key2 | grep key4 … | grep keyn files
-
grep key1 | grep key2 | grep key4 … | grep keyn dirpath
2、find查找文件名本身
-
find ./frameworks/ -name “files_activity.*”
-
find ./ -name “files_activity.*”
八、adb shell 查看系统相关信息
1.1、adb shell cat /proc/meminfo 查看内存信息
1.2、adb shell cat /proc/cpuinfo 查看CPU 相关信息
1.3、adb shell cat /proc/pid 查看进程相关信息
1.4、adb shell getprop ro.build.version.release 查看系统版本
1.5、adb shell wm density 查看设备屏幕密度
1.6、adb shell ip route show table main 查看main 路由表
rk3399_all:/ # ip route show table main
default dev ppp0 scope link
10.31.23.0/24 dev eth0 proto kernel scope link src 10.31.23.1
10.64.64.64 dev ppp0 proto kernel scope link src 100.149.134.193
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.100
1.7、adb shell ifconfig 查看IP信息
1.8、adb shell cat /system/build.prop 查看硬件属性
9、adb shell dumpsys package < packagename > | grep userId= 查看进程UUID
10、adb shell ps查看正在运行的进程
-
adb shell ps | grep com.crazyai.voiceserver
-
adb shell ps pid -t
-
adb shell ps keyword 查看正在运行的匹配keyword的进程
-
adb shell top 查看实时资源占用情况
11、adb 查看SIGNAL
signal 1 应为 SIGHUP
PS C:\Users\224967\AppData\Local\Temp\Mxt205\tmp\home_224967> adb shell
Hi3751V811:/ # kill -l
1 HUP Hangup 33 33 Signal 33
2 INT Interrupt 34 34 Signal 34
3 QUIT Quit 35 35 Signal 35
4 ILL Illegal instruction 36 36 Signal 36
5 TRAP Trap 37 37 Signal 37
6 ABRT Aborted 38 38 Signal 38
7 BUS Bus error 39 39 Signal 39
8 FPE Floating point exception 40 40 Signal 40
9 KILL Killed 41 41 Signal 41
10 USR1 User signal 1 42 42 Signal 42
11 SEGV Segmentation fault 43 43 Signal 43
12 USR2 User signal 2 44 44 Signal 44
13 PIPE Broken pipe 45 45 Signal 45
14 ALRM Alarm clock 46 46 Signal 46
15 TERM Terminated 47 47 Signal 47
16 STKFLT Stack fault 48 48 Signal 48
17 CHLD Child exited 49 49 Signal 49
18 CONT Continue 50 50 Signal 50
19 STOP Stopped (signal) 51 51 Signal 51
20 TSTP Stopped 52 52 Signal 52
21 TTIN Stopped (tty input) 53 53 Signal 53
22 TTOU Stopped (tty output) 54 54 Signal 54
23 URG Urgent I/O condition 55 55 Signal 55
24 XCPU CPU time limit exceeded 56 56 Signal 56
25 XFSZ File size limit exceeded 57 57 Signal 57
26 VTALRM Virtual timer expired 58 58 Signal 58
27 PROF Profiling timer expired 59 59 Signal 59
28 WINCH Window size changed 60 60 Signal 60
29 IO I/O possible 61 61 Signal 61
30 PWR Power failure 62 62 Signal 62
31 SYS Bad system call 63 63 Signal 63
32 32 Signal 32 64 64 Signal 64
12、adb 操作Android SystemProperties
- adb shell getprop 获取指定属性
- adb shell setprop < key > < value > 设置指定属性
未完待续…