Android adb 使用总结 (调试专用)
16lz
2021-01-23
adb 安装
- android 内置应用
out/target/product/xxx/system/app/MusicTests/MusicTests.apk 编译完成后显示adb push MusicTests.apk system/app/MusicTests
- adb install 第三方应用
adb install -r path/MusicTests.apk
-r 表示replace
adb 卸载
adb uninstall app包名 例:adb uninstall com.android.music
adb 启动app
adb shell am start -n 包名/.xxxActivity //例子: adb shell am start -n com.android.music/.MediaPlaybackActivity
adb 发送广播
当调试的程序没有activity 时候,用广播方式
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n package_name/class_name
平时只是指定
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
adb 获取当前activity
adb shell dumpsys activity| grep "mFocusedActivity"//或者adb shell dumpsys window | grep mCurrentFocus
adb 接收广播
adb shell dumpsys |grep BroadcastRecord
adb 启动服务
adb shell am startservice -n com.android.XXX/com.android.xxx.service
其他
adb shell pm list packages -f 列出所有安装包目录,对应 的手机中位置
log 脚本调试某一个app
log.sh 记得 chmod a+x
#!/bin/bashpackageName=$1pid=`adb shell ps | grep $packageName | awk '{print $2}'`adb logcat | grep --color=auto $pid
执行 ./log.sh 包名
举例:
./log.sh com.android.floatball 开始抓悬浮球的log
脚本解析:
packageName=$1
log.sh 后面第一个参数是 com.android.floatball
所以$1 表示第一个参数 com.android.floatball 即packageName = com.android.floatball
adb shell ps | grep $packageName 表示显示进程 grep 过滤除了packageName 的进程信息,如下:
system 1323 337 1892416 64444 SyS_epoll_ 7a5104e3ac S com.android.floatball
第二个 1323 表示进程号 ,所以 awk ‘{print $2}’ awk 一行一行读取信息,所以读取了进程信息
,并且打印 第二个参数值 1323 赋值给 pid . print $2 表示读取整行信息后,打印第二个参数变量
adb logcat | grep –color=auto $pid 打印pid 进程 的log
如果想杀死进程pid ,adb shell kill pid
更多相关文章
- Android应用程序进程启动过程的源代码分析(2)
- Android中获取屏幕信息DisplayMetrics的用法
- android获取设备存储信息
- Android系统进程Zygote启动过程的源代码分析(3)
- Android webview注入自己的js代码(js传入function等其他参数解决)
- Android 进程和线程模型 .
- 进程和线程模型(android)