Android 进阶——调试调优利器 ADB常用指令大全

文章大纲

引言

作为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
trackball

The 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含义
3HOME 键
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 > 设置指定属性

未完待续…

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
android adb shell 命令大全 1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 4. 启动模拟器: emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800) 5. 删除AVD(模拟器): android delete avd --name 名称 6. 创建SDCard: mksdcard 1024M ~/名称.img 7. AVD(模拟器)所在位置: Linux(~/.android/avd) Windows(C:\Documents and Settings\Administrator\.android\avd) 8. 启动DDMS: ddms 9. 显示当前运行的全部模拟器: adb devices 10. 对某一模拟器执行命令: abd -s 模拟器编号 命令 11. 安装应用程序: adb install -r 应用程序.apk 12. 获取模拟器中的文件: adb pull 13. 向模拟器中写文件: adb push 14. 进入模拟器的shell模式: adb shell 15. 启动SDK,文档,实例下载管理器: android 16. 缷载apk包: adb shell cd data/app rm apk包 exit adb uninstall apk包的主包名 adb install -r apk包 17. 查看adb命令帮助信息: adb help 18. 在命令行中查看LOG信息: adb logcat -s 标签名 19. adb shell后面跟的命令主要来自: 源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。 20. 删除系统应用: adb remount (重新挂载系统分区,使系统分区重新可写)。 adb shell cd system/app rm *.apk 21. 获取管理员权限: adb root 22. 启动Activity: adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。 23、发布端口: 你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如: adb forward tcp:5555 tcp:8000 24、复制文件: 你可向一个设备或从一个设备中复制文件, 复制一个文件或目录到设备或模拟器上: adb push 如:adb push test.txt /tmp/test.txt 从设备或模拟器上复制一个文件或目录: adb pull 如:adb pull /addroid/lib/libwebcore.so . 25、搜索模拟器/设备的实例: 取得当前运行的模拟器/设备的实例的列表及每个实例的状态: adb devices 26、查看bug报告: adb bugreport 27、记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: adb shell logcat -b radio 28、获取设备的ID和序列号: adb get-product adb get-serialno 29、访问数据库SQLite3 adb shell sqlite3 #cd system/sd/data //进入系统内指定文件夹 #ls //列表显示当前文件夹内容 #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 #rm xxx //删除文件xxx #rmdir xxx //删除xxx的文件夹

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrazyMo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值