Android基础--adb使用

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。


在使用adb命令之前先安装adb工具,下载adb路径:https://developer.android.com/studio/releases/platform-tools.html

常用命令
卸载安装包:adb uninstall xx(包名)
安装app:adb  install  xx.apk或者adb  install -r   xx.apk
启动app : adb shell am start -ncom.xiaomi.mihomepos/com.xiaomi.mihome.activity.MainTabActivity(实例)



一、概述

在实际项目开发中,尽管ADT给我们提供了DDMS来方便我们操作使用,但是当遇到文件夹无权限的问题时,又需要我们使用ADB指令进行,所以掌握常见的adb指令很有必要,下面就来总结下我们常见的adb指令。

在我们使用adb指令的时候,为了方便我们使用,我们最好将sdk的目录进行环境变量的配置,配置adb的环境变量。


 二、常见ADB指令的使用

1、adb devices:显示当前连接的全部模拟器
[html]  view plain  copy
  1. <pre name="code" class="java">    C:\Users\Administrator>adb devices  
  2.     List of devices attached  
  3.     142159d4e31740e0        device  
[java]  view plain  copy
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">    </span>  
 
 2、adb kill-server:杀死adb连接进程3、adb start-server:开启adb进程 
 
[java]  view plain  copy
  1. C:\Users\Administrator>adb start-server  
  2. * daemon not running. starting it now on port 5037 *  
  3. * daemon started successfully *  

4、adb install path.apk:安装指定路径的apk文件
[java]  view plain  copy
  1. C:\Users\Administrator>adb install C:\Users\Administrator\Desktop\Test.apk  
  2. 1473 KB/s (514647 bytes in 0.341s)  
  3.         pkg: /data/local/tmp/Test.apk  
  4. Success  

5、adb uninstall packname:删除指定应用包名的apk文件。

[java]  view plain  copy
  1. C:\Users\Administrator>adb uninstall com.dsw.test  
  2. Success  
[java]  view plain  copy
  1. <strong><span style="font-size:14px;">  
  2. </span></strong>  
6、adb push localpath remotepath:将本地指定路径的apk推送到系统某路径下。
[java]  view plain  copy
  1. C:\Users\Administrator>adb push C:\Users\Administrator\Desktop\Test.apk system/app  
  2.    failed to copy 'C:\Users\Administrator\Desktop\Test.apk' to 'system/app/Test.apk  
  3.    ': Read-only file system  
  4.    2026 KB/s (514647 bytes in 0.248s)  

此时,我们暂时不要管Read-only这个错误。

7、adb shell进入模拟器shell命令模式
[java]  view plain  copy
  1. C:\Users\Administrator>adb shell  
  2. root@sabreauto_6q:/ #  
    
8、查看各个目录的挂在权限,首先进入到shell命令行,执行mount指令。

[java]  view plain  copy
  1. 1|root@sabreauto_6q:/ # mount  
  2.    rootfs / rootfs ro,relatime 0 0  
  3.    tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0  
  4.    devpts /dev/pts devpts rw,relatime,mode=600 0 0  
  5.    proc /proc proc rw,relatime 0 0  
  6.    sysfs /sys sysfs rw,relatime 0 0  
  7.    none /acct cgroup rw,relatime,cpuacct 0 0  
  8.    none /sys/fs/cgroup tmpfs rw,relatime,mode=750,gid=1000 0 0  
  9.    tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0  
  10.    tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0  
  11.    tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0  
  12.    tmpfs /mnt/shm tmpfs rw,relatime,size=1024k,mode=775,uid=1013,gid=1000 0 0  
  13.    none /dev/cpuctl cgroup rw,relatime,cpu 0 0  
  14.    pstore /sys/fs/pstore pstore rw,relatime 0 0  
  15.    /dev/block/mmcblk2p5 /system ext4 ro,relatime,data=ordered 0 0  
  16.    /dev/block/mmcblk2p4 /data ext4 rw,nosuid,nodev,noatime,nodiratime,noauto_da_all  
  17.    oc,data=ordered 0 0  
  18.    /dev/block/mmcblk2p6 /cache ext4 rw,nosuid,nodev,relatime,data=ordered 0 0  
  19.    /dev/block/mmcblk2p7 /device ext4 ro,nosuid,nodev,relatime,data=ordered 0 0  
  20.    adb /dev/usb-ffs/adb functionfs rw,relatime 0 0  
  21.    none /sys/kernel/debug debugfs rw,relatime 0 0  
  22.    /dev/block/vold/179:9 /mnt/media_rw/sdcard0 vfat rw,dirsync,nosuid,nodev,noexec,  
  23.    relatime,uid=1023,gid=1023,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,i  
  24.    ocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0  
  25.    /dev/block/vold/179:9 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relat  
  26.    ime,uid=1023,gid=1023,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iochar  
  27.    set=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0  
  28.    /dev/fuse /storage/sdcard0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1  
  29.    023,default_permissions,allow_other 0 0  

通过上面我们可以看到文件夹的读写权限。

9、修改文件夹的读写权限,重新挂在权限,需要在shell命令行模式下,执行mount -o remount -o rw /system,就该为rw权限。
[java]  view plain  copy
  1. root@sabreauto_6q:/ # mount -o remount -o rw /system  
  2. root@sabreauto_6q:/ # exit  
这样我们就完成权限修改,再次执行adb push指令时就不会遇到失败。如下:
[java]  view plain  copy
  1. C:\Users\Administrator>adb push C:\Users\Administrator\Desktop\Test.apk system/app  
  2. 1278 KB/s (514647 bytes in 0.393s)  

10、rm .apk删除指定的apk。比如上面我们将test.apk推到system目录下,他就是以系统apk的形式存在。我们进入shell模式下,执行rm test.apk进行删除。
[java]  view plain  copy
  1. 255|root@sabreauto_6q:/ # cd /system/app  
  2.    root@sabreauto_6q:/system/app # rm test.apk  
  3.    rm failed for test.apk, No such file or directory  
  4.    255|root@sabreauto_6q:/system/app # rm Test.apk  
  5.    root@sabreauto_6q:/system/app #  

三、Shell环境下常用指令

首先通过adb shell进入到shell指令页面。

1、查看设备中运行的进程:ls
[java]  view plain  copy
  1. C:\Users\Administrator>adb shell  
  2. root@sabreauto_6q:/ # cd /data/data  
  3. root@sabreauto_6q:/data/data # ls  
  4. com.android.backupconfirm  
  5. com.android.bluetooth  
  6. com.android.borqs.music  
  7. com.android.borqs.sleep  
  8. com.android.borqs.standby  

2、查看设备所安装的应用程序包名:
pm list packages
[java]  view plain  copy
  1. root@sabreauto_6q:/data/data # pm list packages  
  2. package:com.systemupdate  
  3. package:com.borqs.taskmanager  
  4. package:com.android.defcontainer  
  5. package:com.android.launcher  
  6. package:com.iflytek.afadapter  
  7. package:com.borqs.gpsvalidation  
  8. package:com.android.contacts  
  9. package:com.tservice.positionreport  
  10. package:com.android.phone  

四、adb logcat查看日志

adb logcat 命令格式 : adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括号 [] 中, 说明这是可选的;
-- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志;


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


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


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


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


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


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


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


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


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


--"-B"选项 : 以二进制形式输出日志;


1、设置指定过滤器的的logcat日志
[java]  view plain  copy
  1. C:\Users\Administrator>adb logcat -s dsw  
  2.    --------- beginning of /dev/log/system  
  3.    --------- beginning of /dev/log/main  
  4.    D/dsw     (24553): dsw:0  
  5.    D/dsw     (24553): dsw:1  
  6.    D/dsw     (24553): dsw:2  
  7.    D/dsw     (24553): dsw:3  
  8.    D/dsw     (24553): dsw:4  
  9.    D/dsw     (24553): dsw:5  
  10.    D/dsw     (24553): dsw:6  
  11.    D/dsw     (24553): dsw:7  
  12.    D/dsw     (24553): dsw:8  
  13.    D/dsw     (24553): dsw:9  
  14.    D/dsw     (24553): dsw:10  
使用 adb logcat | grep TAG 也可达到效果

2、将输出日志保存到文件中。adb logcat -f /sdcard/log.txt 命令, 注意这个log文件是输出到手机上,需要指定合适的路径。

3、logcat输出的格式,指定 logcat 的日志输出格式,使用adb logcat -v time 命令, 可以啥看日志的输出时间;使用adb logcat -v threadtime 命令, 可以啥看日志的输出时间和线程信息;

4、执行命令:adb logcat,会有无数条Log快速生成在控制台上,那么这时就有同学会问,如果吧一大堆Log抓下来一个一个E去找是十分不方便的,于是我们引进了强大的正则表达式:grep。例如查看Error级别的日志。adb logcat | gerp ^E


常见指令集合:

获取序列号:
adb get-serialno


查看连接计算机的设备:
adb devices


重启机器:
adb reboot


重启到bootloader,即刷机模式:
adb reboot bootloader


重启到recovery,即恢复模式:
adb reboot recovery


查看log:
adb logcat


终止adb服务进程:
adb kill-server


重启adb服务进程:
adb start-server


获取机器MAC地址:
adb shell  cat /sys/class/net/wlan0/address


获取CPU序列号:
adb shell cat /proc/cpuinfo


安装APK:
adb install  //比如:adb install baidu.apk


保留数据和缓存文件,重新安装apk:
adb install -r  //比如:adb install -r baidu.apk


安装apk到sd卡:
adb install -s  // 比如:adb install -s baidu.apk


卸载APK:
adb uninstall  //比如:adb uninstall com.baidu.search


卸载app但保留数据和缓存文件:
adb uninstall -k  //比如:adb uninstall -k com.baidu.search


启动应用:
adb shell am start -n <package_name>/.<activity_class_name>


查看设备cpu和内存占用情况:
adb shell top


查看占用内存前6的app:
adb shell top -m 6


刷新一次内存信息,然后返回:
adb shell top -n 1


查询各进程内存使用情况:
adb shell procrank


杀死一个进程:
adb shell kill [pid]


查看进程列表:
adb shell ps


查看指定进程状态:
adb shell ps -x [PID]


查看后台services信息:
adb shell service list


查看当前内存占用:
adb shell cat /proc/meminfo


查看IO内存分区:
adb shell cat /proc/iomem


将system分区重新挂载为可读写分区:
adb remount


从本地复制文件到设备:
adb push <local> <remote>


从设备复制文件到本地:
adb pull <remote>  <local>


列出目录下的文件和文件夹,等同于dos中的dir命令:
adb shell ls


进入文件夹,等同于dos中的cd 命令:
adb shell cd 


重命名文件:
adb shell rename path/oldfilename path/newfilename


删除system/avi.apk:
adb shell rm /system/avi.apk


删除文件夹及其下面所有文件:
adb shell rm -r 


移动文件:
adb shell mv path/file newpath/file


设置文件权限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf


新建文件夹:
adb shell mkdir path/foldelname


查看文件内容:
adb shell cat <file>


查看wifi密码:
adb shell cat /data/misc/wifi/*.conf


清除log缓存:
adb logcat -c


查看bug报告:
adb bugreport


获取设备名称:
adb shell cat /system/build.prop


查看ADB帮助:
adb help


跑monkey:
adb shell monkey -v -p your.package.name 500

猜你喜欢

转载自blog.csdn.net/chensi16114/article/details/77574367