Android shell 常用 debug 命令

目录

1、查看版本

1.1、Android串口终端执行

getprop ro.build.version.release #获取Android版本

uname -a #查看linux内核版本信息

uname -r #单独查看内核版本

1.2、linux服务器执行

lsb_release -a #查看Linux服务器 Standard Base (LSB) 系统上获取发行版本信息

1.3、Android源码的查看版本

有几种常用的方法可以实现

方法一:如果Android源码已经全编译过,可以在编译生成的build.prop文件中查看ro.build.version.release的值。这个文件通常位于out/XXX/system/build.prop路径下。

方法二:可以在源码build/core/version_defaults.mk文件中搜索PLATFORM_VERSION的值,这个值通常表示源码的版本号。

2、am 命令

调用ActivityManager

1)am start -a android.intent.action.VIEW #发送 intent 隐式action方式

2)am start -n 包名/类名 #启动Activity 显示activity方式

3)am startservice -n 包名/类名 #启动service

4)am boradcast -a "广播Action" #发送广播

5)force-stop 包名 #强行停止应用

3、pm 命令

1)pm list packages #显示所有已安装的apk包名

2)pm list packages -f #显示所有已安装的apk包名及对应的apk位置

3)pm install FileManager.apk #安装FileManager.apk

4)pm install -r FileManager.apk #强制安装,安装过的会覆盖,具体看命令结果提示

5)pm uninstall com.google.vending #卸载goole play,com.google.vending为apk的包名

6)pm dump com.google.android.gms | grep version 查看GMS版本号

7)pm enable com.mediatek.dtv.tvinput.dvbtuner #启动对应程序

8)pm clear your_package_name #清除应用数据

4、dumpsys 命令

dumpsys window #查看窗口信息。在客户端UI出问题时,可用来对比正常和异常的此打印,确定出问题的包名

其中:

1)dumpsys window animator //获取窗口动画状态,Window编号数值越大越接近用户,覆盖在其他窗口之上。可根据

复制代码
console:/ # dumpsys window animator                                        
WINDOW MANAGER ANIMATOR STATE (dumpsys window animator)
    Display{#0 state=ON size=1280x720 ROTATION_0}:
      Window #0: WindowStateAnimator{76c61dd com.droidlogic.launcher/com.droidlogic.launcher.main.MainActivity}
      Window #1: WindowStateAnimator{1422e87 com.android.tv.settings/com.android.tv.settings.MainSettings}

其中,可在 dumpsys window windows 中根据 76c61dd、1422e87 编号查看窗口的详细内容

2)dumpsys window windows //查看各窗口显示的具体信息

5、sed命令

复制代码
//sed命令截取特定字符串(例如"03-02 10:01:21.235")以及之后的内容到文件末尾,并将其保存到新文件中。 $代表文件的最后,并打印(p)这些行
sed -n '/03-02 10:01:21.235/,$ p' original_file.txt > new_file.txt

//截取特定字符串所在行之间的内容,并将这些内容保存到新文件中
sed -n '/03-04 11:52:44.227/,/03-04 11:52:44.176/p' original_file.txt > new_file.txt

//将original_file.txt文件从第二行开始到最后的内容复制到new_file.txt。
sed '1,$!d' original_file.txt > new_file.txt

6、log定位查看APK进程号

ActivityManager: Start proc //定位开机第一次唤醒的apk进程名857,如果中途被杀掉了会重新唤醒一个新的进程名

复制代码
ActivityManager: Start proc 857:com.android.bluetooth/1002 for service {com.android.bluetooth/com.android.bluetooth.btservice.AdapterService}

7、log定位使用场景

1)使用ActivityTaskManager: topActivity.packageName定位开始界面

2)sed截取内容出问题前的界面到文件末尾

3)和正常log 进行对比,搜索出现问题是可能会有的特定字符串(如mute)

4)使用apk的进程号、服务的进程号过滤查看代码执行流程

相关推荐
三少爷的鞋34 分钟前
不改变异步本质,只改变代码组织:Telegram 项目的 Kotlin 协程实践
android
我是koten5 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
好的佩奇9 小时前
蓝牙之广播与扫描
android·flutter·蓝牙
传奇开心果编程11 小时前
【Jetpack Compose娓娓道来】第36课:焦点管理与键盘输入——让遥控器、键盘和输入法都“找得到北”
android·kotlin·移动开发·交互·android jetpack·ui框架·声明式ui
hai_android12 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
红尘伴蝶舞12 小时前
从秒开优化到连环崩溃:深入剖析 ViewPager2 在常驻 DialogFragment 中的复用陷阱与自愈方案
android·kotlin
2601_9679873713 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li13 小时前
linux之数据链路层
linux·网络·智能路由器
GeW14 小时前
高端化走到深处,是数据库和Linux的事
linux
程序员初一15 小时前
Linux 远程桌面有四种做法
linux·ssh