android adb常用命令操作及查看log的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j086924/article/details/82967910

一.adb的常用命令

1.adb下直接拉起当前应用

     eg:  am start -n com.android.settings/.FallbackHome

2.adb remount //将 /system 部分置于可写入的模式,默认情况下 /system'部分是只读模式的, 这个命令只适用于已被 root 的设备

3.adb shell  //进入 android 设备的shell后,eng版本可进入/system,/data 下进行相关操作

     1).adb shell cat /proc/cpuinfo  //查看cpu信息

     2).adb shell cat /sys/class/net/wlan0/address    //获取 wifi mac 地址

     3).adb shell cat /system/build.prop    //获取设备编译属性(手机属性和手机配置信息)

     4).adb shell cat /data/misc/wifi/*.conf   //获取 wifi 配置信息

     5).adb shell am start -W 包名/类名  //可以冷启动或者热启动应用

     6).输入adb shell进入设备后,可以查看sharepreference存储位置(eng版本)

  android7.0所在目录:

  /data/user_de/0/pkgname/databases/

  /data/user_de/0/pkgname/shared_prefs/

  android 6.0所在目录:

        /data/data/pkgname/shared_prefs/  

 7).输入adb shell进入设备后,可进入/data/data/packagename/databases进行数据库的操作(eng版本),如下:

      sqlite>.help  //帮助查看命令

      sqlite> .exit //命令退出sqlite,返回到#提示符

      sqlite>.tables //查看所有表

      sqlite> select * from table //查询来自表table的所有数据

 sqlite> update table set value="1" where _id=1 //修改表table的数据

 sqlite> delete from table where name="**" // 删除table中name="**"的数据

    sqlite> select * from table where name like "%***%" //查询table name中含有字符***的记录

  8). adb shell top | grep app_name //查看app_name的pid进程

  9). adb shell kill PIDNumber  //杀死后台进程 

  10).adb shell ps  //查看当前终端中的进程信息

  11).adb shell top -n 1 -d 0.5 | grep proc_ id //查看进程占用cpu的情况

4.adb install **.apk //安装**.apk,有时在install后面会添加 -r和-d的命令,分别为强制和降级版本安装apk(eng版本)

5.adb push **.apk  dir //将**.apk 放置到dir目录下,如之前存在则替换(eng版本)

6.adb pull /**.apk  dir //将/**.apk 拷贝出来到dir目录下

7.adb logcat  |  grep  "**" //logcat终端日志中过滤出只含有"**"的日志信息

 adb logcat | grep -i "**"  //-i 不区分大小写

8.adb shell am  broadcast -a action  //模拟action广播

9.adb logcat | grep "AndroidRuntime" //过滤运行错误

二.logcat日志命令

1.EventLog:终端命令

    1).adb logcat -b events

    2).adb logcat -b events -d

    3).logcat -b events -v threadtime

    4).adb logcat -b main

    5).adb logcat -b radio

    6).adb logcat -b system

2.adb logcat  -b events | grep am_  //过滤activity相关日志

三.logcat日志分析(如果event中出现anr,搜索“am_anr”关键字,如果是logcat log,搜索关键字“ANR”,接着需要看/data/anr下traces.txt文件的栈信息再进行分析)

1.查看工具:一般建议用notepad++或者editplus查看比较方便

2.ActivityManager日志相关分析

  1).TagName分析

 am_low_memory //位于AMS.killAllBackgroundProcesses或者AMS.appDiedLocked,记录当前Lru进程队列长度。
 am_pss  //位于AMS.recordPssSampleLocked()
 am_meminfo  //位于AMS.dumpApplicationMemoryUsage
 am_proc_start  //位于AMS.startProcessLocked,启动进程
 am_proc_bound  //位于AMS.attachApplicationLocked
 am_kill  //位于ProcessRecord.kill,杀掉进程
 am_anr  //位于AMS.appNotResponding
 am_crash  //位于AMS.handleApplicationCrashInner
 am_wtf  /位于AMS.handleApplicationWtf
 am_activity_launch_time  //位于ActivityRecord.reportLaunchTimeLocked(),后面两个参数分别是thisTime和 totalTime.
 am_activity_fully_drawn_time  //位于ActivityRecord.reportFullyDrawnLocked, 后面两个参数分别是thisTime和 totalTime
 am_broadcast_discard_filter  //位于BroadcastQueue.logBroadcastReceiverDiscardLocked
 am_broadcast_discard_app  //位于BroadcastQueue.logBroadcastReceiverDiscardLocked

  2).Activity生命周期相关分析

   am_on_resume_called  //位于AT.performResumeActivity
   am_on_paused_called  //位于AT.performPauseActivity, performDestroyActivity
   am_resume_activity  //位于AS.resumeTopActivityInnerLocked
   am_pause_activity  //位于AS.startPausingLocked
   am_finish_activity  //位于AS.finishActivityLocked, removeHistoryRecordsForAppLocked
   am_destroy_activity  //位于AS.destroyActivityLocked
   am_focused_activity  //位于AMS.setFocusedActivityLocked, clearFocusedActivity
   am_restart_activity  //位于ASS.realStartActivityLocked
   am_create_activity  //位于ASS.startActivityUncheckedLocked
   am_new_intent  //位于ASS.startActivityUncheckedLocked
   am_task_to_front  //位于AS.moveTaskToFrontLocked

  3).Window相关分析

   wm_task_moved  //位于TaskStack.positionTask()
  TaskId, toTop ? 1 : 0, position;
  206,1,3,  //是指把TaskId=206的移动到栈顶(即该栈的长度为4)
  am_home_stack_moved  //位于ASS.moveHomeStack
  CurrentUser, toFront ? 1:0 , homStackId, FocusedStackId
  0,1,0,0,   //是指userId=0, home栈顶的StackId=0, 当前focusedStackId=0,

 3.power分析

  power_sleep_requested  //位于PMS.goToSleepNoUpdateLocked
  power_screen_state  //位于Notifer.handleEarlyInteractiveChange, handleLateInteractiveChange

  battery_level: [22,3660,34.8]  //剩余电量22%, 电池电压3.66v, 电池温度34.8℃
  power_screen_state: [0,3,0,0]  // 灭屏状态(0), 屏幕超时(3). 当然还有其他设备管理策略(1),其他理由都为用户行为(2)
  power_screen_state: [1,0,0,0]  // 亮屏状态(1)

4.Activities分析
 1).看焦点activity, 关键字am_focused_activity
    2).进程启动历史, 关键字Start proc
    3).确认设备是否抖动, 关键字am_proc_died和am_proc_start,检查是否在短时间内出现了大量的这样的log

猜你喜欢

转载自blog.csdn.net/j086924/article/details/82967910