【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习

一 、 测试环境讲解:
1.一台win7电脑
2.安装好sdk,在 sdk\platform-tools 目录下,可以看到adb.exe 文件
【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第1张图片
3.为了方便输入,可以设置环境变量,将adb.exe的路径放到Path中。在变量【Path】值多增加一组数据:【D:\Program Files\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;】
【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第2张图片
4.你打开cmd,输入命令adb version 如果出现如下数据,就说明环境已经正常通过
这里写图片描述
5.电脑启动模拟器或者连接手机,可以看手机助手是否已经连接成功,连接手机可以不用启动eclipse。
【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第3张图片
6.打开cmd,输入命令adb shell 如果出现如下数据,就说明环境 设备连接都已经正常通过
这里写图片描述
二 、 abd命令讲解:
abd命令可以分为两类,一种是dos命令,一种是linux的命令。前者 命令 都是通过adb + XXX 的格式执行的,后者 在你输入 adb shell后,电脑远程连接手机或者模拟器上的linux系统,此时相当于在手机或模拟器上面输入 linux命令,直接对手机或模拟器进行操作,所以像ls cd等命令都可以正常使用。
1.dos命令

  • adb shell,进入到Android Shell命令模式,此时手机或者模拟器要连接成功,否则报错,提示未找到设备。
 adb shell  - run remote shell interactively

【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第4张图片

  • adb devices 是列出所有连接的设备
devices [-l]  - list all connected devices
            ('-l' will also list device qualifiers)

【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第5张图片

  • adb push 和adb pull 这两个命令,是从手机导出或者导入文件。
adb push [-p] <local> 
                               - copy file/dir to device

                                 ('-p' to display the transfer progress)
     adb pull [-p] [-a]  [<local>]
                               - copy file/dir from device
                                 ('-p' to display the transfer progress)
                                 ('-a' means copy timestamp and mode)
  • adb install 和adb uninstall是安装apk到设备,或者是从设备中卸载apk
adb install [-lrtsdg] <file>
                               - push this package file to the device and install it
                                 (-l: forward lock application)
                                 (-r: replace existing application)
                                 (-t: allow test packages)
                                 (-s: install application on sdcard)
                                 (-d: allow version code downgrade)
                                 (-g: grant all runtime permissions)
  adb uninstall [-k]  - remove this app package from the device
                                 ('-k' means keep the data and cache directories)
  • adb logcat查看设备的logcat日志。不过一般都是从IDE工具中查看,这个博客讲了logcat的使用,感兴趣可以看下【http://blog.csdn.net/tumuzhuanjia/article/details/39555445】
db logcat [ <filter-spec> ] - View device log

这些命令不需要全部记住,只要在cmd下打一下adb 或 adb help就都出来
2.linux 命令
linux命令是指在linux平台下输入的指令(命令和常见的linux命令一致,linux 都是在shell里面的操作),通过dos命令【adb shell 】就可以进入Android Shell命令模式(在之前已经介绍过)。你可以理解为,此时你的所以操作就是在手机系统(基于linux系统)里面输入指令,当然并不是所以的linux指令都支持。下面我们简单测试几组指令看看结果。

  • 通过【adb shell 】- > 【ls】命令查看当前路径下的文件内容,如下:
    【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第6张图片
    在上图的左侧,是通过远程查看手机的内容,右侧是360手机助手查看的内容,可以看到里面的内容基本是一致的(本来就是同一个路径,肯定相同,呵呵),注意,我们平时写代码时,数据库以及Sp(服务提供商)内容都是写在data/data/的包名下,这个需要root的手机才能查看,否则查看不了
    可以再贴张在mac系统上的查看sdcard文件的图:
    【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第7张图片

  • 查看进程的命令 ps,将正在运行的所有进程都罗列出来。

shell@HM2014011:/ $ ps
USER PID PPID VSIZE RSS WCHAN PC STATUS NAME
root 1 0 912 456 ffffffff 00000000 S /init
media 138 1 73028 3112 ffffffff 00000000 S /system/bin/mediaserver
System 139 1 4580 48 ffffffff 00000000 S /system/bin/matv
gps 143 1 29508 0 ffffffff 00000000 S /system/bin/mtk_agpsd
shell 145 1 1052 160 c0073b10 b6f8c104 S /system/bin/batterywarning
media 146 1 4728 108 ffffffff 00000000 S /system/bin/MtkCodecService
bluetooth 156 1 13996 300 ffffffff 00000000 S /system/bin/mtkbt
wifi 961 1 3900 980 ffffffff 00000000 S /system/bin/wpa_supplicant
bluetooth 1133 136 539316 11268 ffffffff 00000000 S com.mediatek.bluetooth
u0_a81 8287 136 704672 34188 ffffffff 00000000 S com.qihoo.daemon
u0_a81 8306 8287 543452 6952 ffffffff 00000000 S com.qihoo.daemon
u0_a81 8371 136 579252 20600 ffffffff 00000000 S com.qihoo.gameassist
u0_a81 8384 8371 541140 6944 ffffffff 00000000 S com.qihoo.appstore:PluginP01
u0_a81 12020 136 620968 43348 ffffffff 00000000 S com.qihoo.appstore
u0_a81 12033 12020 541140 7104 ffffffff 00000000 S com.qihoo.appstore
u0_a81 16099 136 575516 21144 ffffffff 00000000 S com.qihoo.appstore
u0_a81 16116 16099 541140 7112 ffffffff 00000000 S com.qihoo.appstore:PluginP00
u0_a81 32528 136 571564 20624 ffffffff 00000000 S com.qihoo360.mobilesafe.clean
u0_a81 32554 32528 541140 6964 ffffffff 00000000 S com.qihoo.appstore:PluginP08

说明:
USER:进程的当前用户
PID :process ID,该进程ID
PPID:process parent ID,父进程ID,该进程上级父程序的ID
VSIZE :virtual size, 进程所使用的虚拟内存的大小(Kbytes)
RSS :进程所使用的物理内存的大小(Kbytes)
WCHAN :进程如果处于休眠状态的话,在内核中的地址
PC : program counter,
STAT:该程序目前的状态,主要的状态有
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
NAME: process name,进程的程序名或进程位置

如果想查看某一个,那么可以使用 ps |grep命令
例如:你查看360手机助手的进程,可以这么使用ps | grep com.qihoo.appstore
【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第8张图片
打开应用管理,查看正在运行的程序,可以看到有3个360相关进程正在运行,说明一下,com.qihoo.appstore 就是奇虎应用商店的意思,360系列产品是奇虎旗下。
【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第9张图片

分析下,一共有6个进程PID。其中PPID 136进程包含两个子进程(PID为1202016099),而PPID 16099又有一个子进程(PID 16116),PPID 12020也有一个子进程(PID 12033),所以中间这四个显示一个进程 ,
那么在手机正在运行中就恰好有3个进程,分别为com.qihoo.appstore(PID为12020160991203316116)、com.qihoo.appstore:PluginP01 (PID为8384)、com.qihoo.appstore:PluginP08 (PID为32554

观察这些有什么作用呢?通过查看这些进程,我们可以更好的去了解别人开发的app客户端的应用结构,思考360手机助手为什么要同时启动了4个进程多个服务,也可以用来自己做的客户端的service 是否有启动,比如服务推送。有时候我们去面试,考官也会问是否有linux命令,所以了解这些也是有一定的帮助。

  • 可以通过kill 命令来杀死进程,通过kill pid 或sudo kill pid,这个需要root权限
    这里写图片描述
    如果连接的是模拟器(模拟器直接是root权限),就可以kill成功。
    这里写图片描述
  • 在根目录下的/proc文件夹中有很多对应进程ID号的子文件夹,可以进入对应的文件夹,通过cat status查看进程信息,当然也可以直接输入cat /proc/pid/status来查看。
    【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第10张图片
    观察Groups这组数据,1015代表的是什么意思?
    通过查看源码
    【http://androidxref.com/4.4.2_r1/xref/system/core/include/private/android_filesystem_config.h】:
    【安卓学习之工具学习】adb初步学习--adb命令和shell命令学习_第11张图片

可以看出是写SD卡的权限,这样通过命令行,读进程,看权限,一目了然,尤其是有些开发者如果不通过IDE,而是直接用Editplus写程序,会这些就很重要了
关于/proc/pid/status解释可以查看博客【http://blog.chinaunix.net/uid-24347760-id-2943156.html】

好了,先介绍到这吧,如果想知道怎么查看这些权限深入了解,我们下次再介绍啊

转载请注明出处:http://blog.csdn.net/ljb568838953/article/details/52212427

你可能感兴趣的:(开发工具)