Android 系统 debug 技巧(串口调试命令)

串口调试命令 debug

adb 命令(去掉adb shell即为串口命令)

  • 发送广播

      adb shell am broadcast -a com.android.test
    
  • 打开activity

      adb shell am start -n com.google.android.tungsten.setupwraith/.MainActivity
    
  • adb start-server:启动adb进程

  • adb kill-server:杀死adb进程
  • adb install E:\yyh.apk
  • adb uninstall 应用包名
  • adb devices:列出与开发环境建立连接的android设备的列表
  • adb shell:进入Android命令行
  • adb shell sqlite3 data/data/com.android.providers.settings/databases/settings.db “select * from secure”(查看secure数据表)
  • Android的指令:
    • ls:罗列出当前目录下的所有文件和文件夹
    • ps:罗列出当前系统运行的所有进程
  • netstat -ano:查看系统的端口占用情况
  • 截图

    • adb shell /system/bin/screencap -p /sdcard/screenshot.png(保存到SDCard)
    • adb pull /sdcard/screenshot.png d:/screenshot.png(保存到电脑)
  • 录屏

    • adb shell screenrecord –time-limit 10 /sdcard/demo.mp4
    • adb pull /sdcard/demo.mp4 F:\mvp\demo.mp4
  • 批量安装apk命令,apk文件得拷贝到adb根目录。

    for %i in (*.apk) do adb install %i

串口命令

logcat
- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志;

--"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;

--"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;

--"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;

--"-v"选项 : 设置日志的输出格式, 注意只能设置一项;

--"-c"选项 : 清空所有的日志缓存信息;

--"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;

--"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;

--"-g"选项 : 查看日志缓冲区信息;

--"-b"选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;

--"-B"选项 : 以二进制形式输出日志;
        logcat --help z
  • logcat -c(清除还没吐出来的缓存log)
  • logcat (开始抓log)
  • logcat -s “过滤条件” (只输出特定的log)
  • logcat -v time(log中带时间戳)
  • logcat -f 路径(将logcat保存在一个路径下)
  • logcat | grep -i wifi(使用管道来进行过滤,查询wifi并忽略大小写)
dumpsys

输出系统在一段时间里的状况,包括activity,广播等之类,比较多

因为dumpsys刷出来的东西太多,故可以和grep结合使用

dumpsys activity               查看Activity信息 
dumpsys package <package-name> 查看包的信息
dumpsys activity activities    查看Activity栈
dumpsys audio                  查看audio信息
dumpsys |grep BroadcastRecord  查看广播记录
dumpsys input                  查看设备对应的kl文件信息
dumpsys wifi                   查看wifi信息
dumpsys activity top 查看顶层应用情况,具体哪一个在最上面
一些常用的串口命令
  • input text 账号密码(快速 输入账号密码)

  • getevent (看按键键值)

  • getprop 系统属性(得到系统属性的值)

  • input keyevent 键值(模拟按键)

  • getenforce(查看selinux的权限)

  • dumpsys window|grep mFocusedWindow(查看当前界面属于那一个应用)

  • setenforce 0(将selinux的权限去掉)
  • setprop 系统属性 系统属性值(设置系统属性)
settings

** 系统中很多的属性都是在Setting这个应用设置的,例wifi,蓝牙,声音,亮度等,这些数据主要是存储在数据库中,对应的URI为:content://settings/system和content://settings/secure.对应的数据库为: /data/data/com.android.providers.settings/databases/settings.db里,里面有三个表global, system, secure.

可以通常这样查看数据

adb shell sqlite3 data/data/com.android.providers.settings/databases/settings.db "select * from secure"

但是自从android 6.0以后这几个表都变为了xml文件。具体位置如下:

不同用户放不同的路径下,如果没有创建新用户,则在/data/system/users/0下

settings_global.xml, settings_system.xml, settings_secure.xml

  • 用代码设置或者得到系统属性的值

    Settings.Secure.getInt(getContentResolver() , Settings.Secure.WIFI_ON);
    Settings.System.putInt(mContext.getContentResolver(), key, value);
    
  • 用串口:(system,secure类似)

     settings get global 系统属性key
    
     settings put global 系统属性key 系统属性值
    
pm
  • pm install -r (安装应用)
  • pm create-user 10(创建用户)
  • pm list users(列出所有用户)
  • pm remove-user 10(在主用户模式下删除10这个用户)
am
  • am switch-user 10(切换到10这个用户)

后续持续更新

猜你喜欢

转载自blog.csdn.net/xct841990555/article/details/80436100