Android 常用 adb 命令总结(二)

adb shell 命令

       adb命令和adb shell命令的区别是什么?adb命令时adb这个程序自带的一些命令,而adb shell则是调用的Android系统中的命令,这些Android特有的命令都放在了Android设备的system/bin目录下。

   pm

       Package Manager,可以用来获取到一些安装在Android设备上的应用信息

       pm的源码pm.java-------(3),直接运行adb shell pm 可以获取到该命令的帮助信息

           pm list package列出安装再设备上的应用:

                1)不带任何选项:列出所有的应用的包名:

                       adb shell pm list package

                2)-s:列出系统应用

                       adb shell pm list package -s 

                3)-3:列出第三方应用

                       adb shell pm list package -3

                4)-f:列出应用包名及对应的apk名及存放位置

                       adb shell pm list package -f

                5)-i:列出应用包名及其安装来源

                       adb shell pm list package -i

                例如:package:com.zhihu.android installer=com.xiaomi.market  

               6)参数组合使用,例如查找三方应用中知乎的包名、apk存放位置、安装来源:

                       adb shell pm list package -f -3 -i zhihu

                  package:/data/app/com.zhihu.android-1.apk=com.zhihu.android  installer=com.xiaomi.market

             

           pm path 列出对应包名的.apk位置:

                      adb shell pm path com.tencent.mobileqq

                  package:/data/app/com.tencent.mobileqq-1.apk

           

           pm list instrumentation,列出含有单元测试case的应用,后面可跟参数-f(与pm list package中的一样),以及[TARGET-PACKAGE]

           

         pm dump,后跟包名,列出指定应用的dump信息,里面有各种信息:

                      adb shell pm dump com.tencent.mobileqq

                        Packages:                         Package [com.tencent.mobileqq] (4397f810):                         userId=10091 gids=[3003, 3002, 3001, 1028, 1015]                         pkg=Package{43851660 com.tencent.mobileqq}                         codePath=/data/app/com.tencent.mobileqq-1.apk                         resourcePath=/data/app/com.tencent.mobileqq-1.apk                         nativeLibraryPath=/data/app-lib/com.tencent.mobileqq-1                         versionCode=242 targetSdk=9                         versionName=5.6.0                         applicationInfo=ApplicationInfo{43842cc8 com.tencent.mobileqq}                         flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ]                         dataDir=/data/data/com.tencent.mobileqq                         supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]                         usesOptionalLibraries:                         com.google.android.media.effects                         com.motorola.hardware.frontcamera                         timeStamp=2015-05-13 14:04:24                         firstInstallTime=2015-04-03 20:50:07                         lastUpdateTime=2015-05-13 14:05:02                         installerPackageName=com.xiaomi.market                         signatures=PackageSignatures{4397f8d8 [43980488]}                         permissionsFixed=true haveGids=true installStatus=1                         pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ]                         User 0:  installed=true blocked=false stopped=false notLaunched=false enabled=0                         grantedPermissions:                         android.permission.CHANGE_WIFI_MULTICAST_STATE                         com.tencent.qav.permission.broadcast                         com.tencent.photos.permission.DATA                         com.tencent.wifisdk.permission.disconnect


              pm install,安装应用。目标apk存放与PC端,用adb install安装。目标apk存放于Android设备上,用pm install安装

      

              pm uninstall,卸载应用,同adb uninstall,后面跟的参数都是应用的包名


              pm clear,清除应用数据


              pm set-install-location,pm get-install-location,设置应用安装位置,获取应用安装位置。[0/auto]:默认为自动,[1/internal]:默认为安装在手机内部,[2/external]:默认安装在外部存储。


  am

     am 源码 am.java----------(4)

              am start,启动一个Activity,以启动系统相机应用为例:

                   1)启动相机:

                     adb shell am start -n com.android.camera/.Camera

                     Starting: Intent { cmp=com.android.camera/.Camera }

                   2)先停止目标应用,再启动:

                     adb shell am start -S com.android.camera/.Camera

                     Stopping: com.android.camera                        Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]                       cmp=com.android.camera/.Camera }

                   3)等待应用完成启动:

                     adb shell am start -W com.android.camera/.Camera

                     Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]                           cmp=com.android.camera/.Camera }                        Status: ok                        Activity: com.android.camera/.Camera                        ThisTime: 500                        TotalTime: 500                        Complete

                   4)启动默认C页:

                      adb shell am start -a android.intent.action.VIEW -d http://testerhome.com

                      Starting: Intent { act=android.intent.action.VIEW dat=http://testerhome.com

                   5)启动拨号器拨打10086

                      adb shell am start -a android.intent.action.CALL -d tel:10086

                      Starting: Intent { act=android.intent.action.CALL dat=tel:xxxxx }

    

               am instrument,启动一个instrumention,单元测试或者Robotium会用到

               

               am monitor,监控crash与ANR

                      adb shell am monitor

                      Monitoring activity manager...  available commands:                         (q)uit: finish monitoring                         ** Activity starting: com.android.camera

 

                am force-stop,后跟包名,结束应用

   

                am startsevice,启动一个服务

 

                am broadcast,发送一个广播