• Android开发中adb命令的常用方法


     Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于在调试时连接本机和手机设备.


            adb有很多命令,本文只列出一些常用的命令,要查看所有的adb命令和用法, 可以在命令行中输入adb进行查看.

    这些命令都是根据本人在开发过程中的使用进行总结的,以后如果发现其他常用的和有用的命令,会加入本文中.下面是一些常用的命令和用法.



    一    adb常用命令


    adb start-server      

            开启adb服务


    adb kill-server             

            终止adb服务


    adb devices  

            列出所有连接到adb的设备, 包括真机和模拟器


    adb version                 

            显示adb的版本号


    adb install <apk file name>   

    将指定的app安装到唯一连接到adb的设备上,后边跟的参数为安装包的文件名


    adb install -r <apk file name>

            安装应用程序, 但是保留原有应用程序的所有数据


    adb uninstall <package name>

            将包名指定的app从目标设备上卸载,后边跟的参数为应用程序的包名


    adb uninstall -k <package name>   

    将包名指定的app从目标设备上卸载, 但是保留配置文件和缓存


    adb push <local> <remote>   

    将本机的文件或目录拷贝到目标设备的文件系统中


    adb pull <remote> [<local>] 

    将目标设备中的文件或目录拷贝到本机中


    adb shell

    进入目标设备的Linux Shell环境, 在该环境中可以执行一些Linux命令.如在Linux Shell环境中执行ps可以查看android设备中运行的所有进程.在Linux Shell环境中执行exit可以退出Linux Shell环境


    adb shell dumpsys activity

    列出目标设备上的activity栈(back stack)和任务(task)的信息, 还有其他组件的一些信息和一些关于进程的信息


    adb shell dumpsys packages

    列出一些系统信息和所有应用的信息。这个命令的输出很庞大,在三星nexus上的输出有12000多行。这些信息

    都非常详细,包括Features,Activity Resolver Table等。以下是输出的主要信息:

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-family:SimSun;font-size:14px;">Verifiers:  
    2.   
    3.   
    4.     ...  
    5.   
    6. Libraries:  
    7.   
    8.     
    9.     ...  
    10.   
    11. Features:  
    12.   
    13.    
    14.     ...  
    15.   
    16. Activity Resolver Table:  
    17.   
    18.   Full MIME Types:  
    19.   
    20.     ...  
    21.   
    22.   MIME Typed Actions:  
    23.   
    24.     ...  
    25.   
    26. Receiver Resolver Table:  
    27.   
    28.   Full MIME Types:  
    29.   
    30.   
    31.     ...  
    32.   
    33.   Non-Data Actions:  
    34.   
    35.     ...  
    36.   
    37. Service Resolver Table:  
    38.   
    39.   Full MIME Types:  
    40.   
    41.         
    42.     ...  
    43.   
    44.   Base MIME Types:  
    45.   
    46.   
    47.     ...  
    48.   
    49.   Non-Data Actions:  
    50.   
    51.   
    52.     ...  
    53.   
    54.   MIME Typed Actions:  
    55.   
    56.     ...  
    57.   
    58. Preferred Activities User 0:  
    59.   
    60.   
    61.     ...  
    62.   
    63. Permissions:  
    64.   
    65.   
    66.     ...  
    67.   
    68. Registered ContentProviders:  
    69.   
    70.     ...   
    71.   
    72. ContentProvider Authorities:  
    73.   
    74.     ...  
    75.   
    76. Shared users:  
    77.   
    78.     ...  
    79.   
    80.   
    81. Settings parse messages:  
    82.   
    83. Read completed successfully: 149 packages, 12 shared uids  
    84.   
    85.     ...  
    86.   
    87. Package warning messages:  
    88.   
    89.     ...</span>  


    adb shell pm list permissions

             列出目标平台上的所有权限


    adb shell pm list packages

    列出目标设备上安装的所有app的包名


    adb shell pm list features

            列出目标设备上的所有feature



    使用adb命令启动一个Activity

    [plain] view plain copy
    1. <span style="font-family:SimSun;font-size:14px;">adb shell am start PACKAGE_NAME/ACTIVITY_IN_PACKAGE  
    2. adb shell am start PACKAGE_NAME/FULLY_QUALIFIED_ACTIVITY  
    3.   
    4. # example  
    5. adb shell am start -n com.growingwiththeweb.example/.MainActivity  
    6. adb shell am start -n com.growingwiththeweb.example/com.growingwiththeweb.example.MainActivity</span>  



    屏幕截图, 并使用perl命令保存截图

    adb shell screencap -p | perl -pe 's/x0Dx0A/x0A/g' > screen.png


    解锁屏幕

    adb shell input keyevent 82




    注:  所有以"adb shell"开头的命令,都可以先执行adb shell命令进入目标设备的Linux Shell环境, 然后在目标设备的Linux Shell中再执行"adb shell"之后的命令.如adb shell dumpsys activity, 可以先执行adb shell, 然后再Linux Shell中再执行dumpsys activity



    二    adb命令中用于确定目标设备的参数


    adb命令有三个重要的参数,当本机上连接了两个或以上的android设备时,这三个参数就有用武之地了:

    -d  说明adb命令的目标设备是唯一连接到adb的真机

    -e  说明adb命令的目标设备是唯一连接到adb的模拟器

    -s  <specific device> 指定adb命令的目标设备


    以下为这三个参数的应用举例:

    adb -d shell

    进入唯一连接到adb的真机的Linux Shell环境


    adb -e install weibo.apk

    将weibo.apk安装到唯一连接到adb的模拟器上


    adb -s emulator-5554 push weibo.apk /sdcard/weibo.apk  

    将weibo.apk文件复制到emulator-5554的/sdcard/weibo.apk位置


    注:  根据我自己的测试,当用-d -e 或者-s 指定目标设备时,命令有时会执行的比较慢,不知道什么原因



    三    使用adb命令行的优势


            尽管现在的用户操作以图形界面为主,但是在一些情况下, 命令行具有图形界面没有的优势, 尤其是对于开发人员, 命令行能提高效率.下面举例说明: 


    1  快速卸载app


    在android开发过程中, 在把程序发布到手机上进行测试时, 有时必须要卸载以前的版本以删除原来的数据,此时只要在命令行中输入

    adb uninstall <包名> 

    即可卸载, 而在手机上卸载, 要经过如下步骤:

    设置 --> 应用程序 --> 管理应用程序 --> 在列表中找到要卸载的程序 --> 点击要卸载的应用程序 --> 卸载


    2  快速删除目录(文件夹)


     如果程序在sd卡上创建了目录MyApp,在该目录中有数据库和一些其他文件,在将程序发布到手机上测试时, 需要删除原来创建的目录再重新创建.这时只需要执行以下命令:

    adb shell
    cd /mnt/sdcard
    rm -r MyApp
    这样的话就不必再在文件浏览器中寻找这个目录并删除它 . 
     在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:SimSun;font-size:14px;">Verifiers: 
  2.  
  3.  
  4.     ... 
  5.  
  6. Libraries: 
  7.  
  8.    
  9.     ... 
  10.  
  11. Features: 
  12.  
  13.   
  14.     ... 
  15.  
  16. Activity Resolver Table: 
  17.  
  18.   Full MIME Types: 
  19.  
  20.     ... 
  21.  
  22.   MIME Typed Actions: 
  23.  
  24.     ... 
  25.  
  26. Receiver Resolver Table: 
  27.  
  28.   Full MIME Types: 
  29.  
  30.  
  31.     ... 
  32.  
  33.   Non-Data Actions: 
  34.  
  35.     ... 
  36.  
  37. Service Resolver Table: 
  38.  
  39.   Full MIME Types: 
  40.  
  41.        
  42.     ... 
  43.  
  44.   Base MIME Types: 
  45.  
  46.  
  47.     ... 
  48.  
  49.   Non-Data Actions: 
  50.  
  51.  
  52.     ... 
  53.  
  54.   MIME Typed Actions: 
  55.  
  56.     ... 
  57.  
  58. Preferred Activities User 0: 
  59.  
  60.  
  61.     ... 
  62.  
  63. Permissions: 
  64.  
  65.  
  66.     ... 
  67.  
  68. Registered ContentProviders: 
  69.  
  70.     ...  
  71.  
  72. ContentProvider Authorities: 
  73.  
  74.     ... 
  75.  
  76. Shared users: 
  77.  
  78.     ... 
  79.  
  80.  
  81. Settings parse messages: 
  82.  
  83. Read completed successfully: 149 packages, 12 shared uids 
  84.  
  85.     ... 
  86.  
  87. Package warning messages: 
  88.  
  89.     ...</span> 


adb shell pm list permissions

         列出目标平台上的所有权限


adb shell pm list packages

列出目标设备上安装的所有app的包名


adb shell pm list features

        列出目标设备上的所有feature



使用adb命令启动一个Activity

[plain] view plain copy
  1. <span style="font-family:SimSun;font-size:14px;">adb shell am start PACKAGE_NAME/ACTIVITY_IN_PACKAGE 
  2. adb shell am start PACKAGE_NAME/FULLY_QUALIFIED_ACTIVITY 
  3.  
  4. # example 
  5. adb shell am start -n com.growingwiththeweb.example/.MainActivity 
  6. adb shell am start -n com.growingwiththeweb.example/com.growingwiththeweb.example.MainActivity</span> 



屏幕截图, 并使用perl命令保存截图

adb shell screencap -p | perl -pe 's/x0Dx0A/x0A/g' > screen.png


解锁屏幕

adb shell input keyevent 82




注:  所有以"adb shell"开头的命令,都可以先执行adb shell命令进入目标设备的Linux Shell环境, 然后在目标设备的Linux Shell中再执行"adb shell"之后的命令.如adb shell dumpsys activity, 可以先执行adb shell, 然后再Linux Shell中再执行dumpsys activity



二    adb命令中用于确定目标设备的参数


adb命令有三个重要的参数,当本机上连接了两个或以上的android设备时,这三个参数就有用武之地了:

-d  说明adb命令的目标设备是唯一连接到adb的真机

-e  说明adb命令的目标设备是唯一连接到adb的模拟器

-s  <specific device> 指定adb命令的目标设备


以下为这三个参数的应用举例:

adb -d shell

进入唯一连接到adb的真机的Linux Shell环境


adb -e install weibo.apk

将weibo.apk安装到唯一连接到adb的模拟器上


adb -s emulator-5554 push weibo.apk /sdcard/weibo.apk 

将weibo.apk文件复制到emulator-5554的/sdcard/weibo.apk位置


注:  根据我自己的测试,当用-d -e 或者-s 指定目标设备时,命令有时会执行的比较慢,不知道什么原因



三    使用adb命令行的优势


        尽管现在的用户操作以图形界面为主,但是在一些情况下, 命令行具有图形界面没有的优势, 尤其是对于开发人员, 命令行能提高效率.下面举例说明:


1  快速卸载app


在android开发过程中, 在把程序发布到手机上进行测试时, 有时必须要卸载以前的版本以删除原来的数据,此时只要在命令行中输入

adb uninstall <包名>

即可卸载, 而在手机上卸载, 要经过如下步骤:

设置 --> 应用程序 --> 管理应用程序 --> 在列表中找到要卸载的程序 --> 点击要卸载的应用程序 --> 卸载


2  快速删除目录(文件夹)


如果程序在sd卡上创建了目录MyApp,在该目录中有数据库和一些其他文件,在将程序发布到手机上测试时, 需要删除原来创建的目录再重新创建.这时只需要执行以下命令:

adb shell
cd /mnt/sdcard
rm -r MyApp
这样的话就不必再在文件浏览器中寻找这个目录并删除它 .
  • 相关阅读:
    Log4j appender、layout
    EhCache缓存框架的使用
    Log4j rootLogger根配置以及4种日志级别
    开发chrome 插件, background.js中 console log 看不到解决方法
    Windows cmd 长时间不输出新内容 直到按下ctrl + c 取消或者回车的解决办法
    如何查看当前分支从哪个支线创建而来
    C# 获取相对路径的字符串
    解决adobe air sdk打包 apk后自动在包名前面加上air. (有个点)前缀的问题
    sublime text 输入法候选词不跟随光标
    Windows 批处理设置dns ,解决能上qq不能开网页
  • 原文地址:https://www.cnblogs.com/hdk1993/p/6664714.html
  • Copyright © 2020-2023  润新知