总结一些经常使用Android adb 命令

总结一些经常使用的adb 命令

引言

  • Android开发中咱们有时候须要借助一些命令帮助更好的高效率定位解决问题,本文就来介绍一些可能有些隐藏的而却很是好用的命令,能够帮咱们快速找到问题。

基础命令

  • 像一些比较经常使用的命令好比,cd rm cp 就不介绍了,下面介绍几个不太经常使用,了解以后大大提升开发效率的几个命令。android

  • catsql

    • 该命名经常使用语查看文件,如今我往data/local/tmp push了一个config.xml文件,能够用cat 命令对其进行查看。shell

      shell@6753_doov_legend:$ cat config.xml                                                                 
        <?xml version="1.0" encoding="UTF-8"?>
        <nqtestdata>
        <country>CN</country>
        <mcnc>604123</mcnc>
        <!--<lat>39.213123<lat>
        <lon>116.123123<lon>
        <networkcountry>123123</networkcountry>
        <networkmcnc>123123</networkmcnc>-->
        <debug>true</debug>
        <writeLog>true</writeLog>
        <serverType>VRF</serverType>
        </nqtestdata>
        shell@6753_doov_legend:$
    • 该命令还能够结合grep命令进行过滤,好比我如今用grep 命令过滤上述文件中的debug 项数据库

      shell@6753_doov_legend:$ cat config.xml	|grep debug
        <debug>true</debug>
        shell@6753_doov_legend:$

经常使用adb 命令

  • adb install [-l] [-r] [-s] fileapp

    • [-l] 锁定该程序,安装
    • [-r] 从新安装该程序,保存数据
    • [-s] 安装到sdcard
  • adb uninstall [-k] package_nametcp

    • [-K] 不清楚数据,卸载
  • pm clear package_nameide

    -清除指定包名的数据测试

  • pm installui

    • 对应adb install
  • pm uninstall.net

    • 对应adb install
  • adb shell dumpsys

    • adb shelll dumpsys activity top

      - 用于查看当前运行应用的的信息
        C:\Users\isaac>adb shell dumpsys activity top
        	TASK com.aliyun.homeshell id=1
        	  ACTIVITY com.aliyun.homeshell/.Launcher 296c7d6c pid=1867
        	    Local Activity 22a2410f State:
        	      mResumed=true mStopped=false mFinished=false
        	      mLoadersStarted=true
        	      mChangingConfigurations=false
        	      mCurrentConfig={1.0 ?mcc?mnc zh_CN ?layoutDir sw360dp w360dp h615dp 480dpi nrml long port finger -keyb/v/h -nav/h
        	s.6colorMap={header_color=-16731727, dark_mode=0, hw_highlighted_text=1711321521, hw_color_primary_disabled=-16731727, h
        	eader_widget_color_pressed=-2500135, hw_color_primary=-16731727, hw_color_primary_dark=-16739694, header_text_color_unch
        	ecked=-2130706434, dyncolor_mode=1, hw_dialog_ok_button_text_disable=1711321521, header_divider=-13648194, header_text_c
        	olor=-2, header_widget_color_normal=-2, header_widget_color_disable=-2}}
        	    FragmentManager misc state:
        	      mActivity=com.aliyun.homeshell.Launcher@22a2410f
        	      mContainer=android.app.Activity$1@30c7b48c
        	      mCurState=5 mStateSaved=false mDestroyed=false
        	    ViewRoot:略
        	//能够看到当前应用的基本信息已经出来了,下面还包括整个View的层级
  • adb shell dumpsys package <package_name>

    • 能够查看指定包名应用的详细信息(至关于应用的AndroidManifest.xml中的内容)

      C:\Users\isaac>adb shell dumpsys package com.android.settings
        Activity Resolver Table:
          Full MIME Types:
             ...
          Base MIME Types:
             ...
          Schemes:
              printjob:
                ...
              package:
                ...
      
          Non-Data Actions:
              android.net.wifi.PICK_WIFI_NETWORK:
                2ef8f99e com.android.settings/.Settings$WifiSettingsActivity
              android.settings.SHOW_REGULATORY_INFO:
                a449c7f com.android.settings/.RegulatoryInfoDisplayActivity
              ...

    简单的列出几个

  • adb shell dumpsys meminfo <package_name/pid>

    • 能够查看指定进程名或者是进程id的内存信息

      ** MEMINFO in pid 20677 [com.android.settings] **
                       Pss  Private  Private  Swapped     Heap     Heap     Heap
                     Total    Dirty    Clean    Dirty     Size    Alloc     Free
                    ------   ------   ------   ------   ------   ------   ------
          Native Heap        0        0        0        0    12288     6287     6000
          Dalvik Heap     3775     3072        0        0    20323    19251     1072
         Dalvik Other      357      252        0        0
                Stack      156      156        0        0
               Ashmem        8        0        0        0
            Other dev        6        0        4        0
             .so mmap      718      120        0        0
            .apk mmap      399        0      240        0
            .ttf mmap      117        0        0        0
            .dex mmap     1482        0     1052        0
            .oat mmap      930        0       12        0
            .art mmap      932      540        0        0
           Other mmap       27        4        0        0
           EGL mtrack    10880    10880        0        0
            GL mtrack    12620    12620        0        0
              Unknown     4088     4000        0        0
                TOTAL    36495    31644     1308        0    32611    25538     7072
      
         Objects
                       Views:      103         ViewRootImpl:        1
                 AppContexts:        3           Activities:        1
                      Assets:        4        AssetManagers:        4
               Local Binders:       21        Proxy Binders:       23
               Parcel memory:        3         Parcel count:       14
            Death Recipients:        2      OpenSSL Sockets:        0
      
         SQL
                 MEMORY_USED:        0
          PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0
  • adb shell dumpsys dbinfo <package_name>

    • 能够查看指定包名应用的数据库存储信息(包括存储的sql语句)
  • adb shell dumpsys activity services <package_name>

    • 查看该应用起了哪些服务
  • adb pull

    • 将设备中的文件放到到本地

    • eg:adb pull /sdcard/tmp.txt D:\

    命令简单,不在多说,只是在操做的时候可能遇到文件权限问题,用chmod改一下权限便可。

  • adb forward [(远程端)协议:端口号] [(设备端)协议:端口号]

    • 设备的端口转发

      adb forward tcp:23946 tcp:23946
        adb forward tcp:8700 jwdp:1786

    这个命令对于咱们在调试的时候很是有用,特别在IDA调试中。

  • adb jdwp

    • 查看设备中能够被调试的应用的进程号

      adb jdwp

    这个命令或许用途不是不少,可是对于调试的时候仍是有点用途。能够忽略这个命令。

  • adb logcat |findstr pname/pid/keyword

    • 查看当前日志信息

      adb logcat -s tag |findstr  <package_name>
      
        adb logcat -s ActivityManager | findstr  com.android.settings
        I/ActivityManager(  848): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000
         cmp=com.android.settings/.Settings bnds=[828,1302][1026,1542]} from uid 10024 on display 0

    这个命令你们都不陌生,也是重中之重,有的同窗或许会好奇,为什么不用AS查看日志了,可是有时候AS不能知足咱们,好比咱们想开多个日志窗口,这时候咱们能够打开多个cmd窗口利用这个命令查看日志信息便可。用的最多的就是-s参数,能够直接查看对应的tag日志信息,能够利用findstr进行信息过滤:

    • 也能够进入 adb shell 时 经过grep 进行过滤
  • am start -n [包(package)名]/[包名].[活动(activity)名称]

    • 启动一个应用

      am start -n com.android.browser/com.android.browser.BrowserActivity

    注意:能够以debug方式启动应用:am start –D –n …. 特别在咱们反编译调试应用的时候,可能须要以debug方式启动应用

  • am startservice -n [包(package)名]/[包名].[服务(service)名]

    • 启动一个服务

      am startservice -n com.android.traffic/com.android.traffic.maniservice

    和上面命令相似,启动服务

  • am broadcast -a [广播动做]

    • 发送一个广播

      am broadcast -a android.NET.conn.CONNECTIVITY_CHANGE

    和上面的命令相似,发送一个广播,有时候咱们定义了一个广播,可能须要测试,就能够借助这个功能模拟发送一个广播。

  • netcfg

  • 查看设备的ip地址

    有时候想查看设备的ip地址,去设置页面太费劲了,能够直接用这个命令便可

  • aapt dump xmltree [apk包] [须要查看的资源文件xml]

    • 查看apk中的信息以及编辑apk程序包

      aapt dump xmltree demo.apk AndroidManifest.xml
  • dexdump [dex文件路径]

    • 能够查看一个dex文件的相信信息

      dexdump D:\classes.dex
  • cat /proc/[pid]/maps

    • 查看当前进程的内存加载状况,查看当前进程的内存映射信息,好比加载了哪些so文件,dex文件等:
  • cat /proc/[pid]/status

    • 查看当前进程的状态信息
  • cat /proc/[pid]/net/tcp/tcp6/udp/udp6

    • 获取当前应用使用到的端口号信息
相关文章
相关标签/搜索