一 、 测试环境讲解:
1.一台win7电脑
2.安装好sdk,在 sdk\platform-tools 目录下,可以看到adb.exe 文件
3.为了方便输入,可以设置环境变量,将adb.exe的路径放到Path中。在变量【Path】值多增加一组数据:【D:\Program Files\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;】
4.你打开cmd,输入命令adb version 如果出现如下数据,就说明环境已经正常通过
5.电脑启动模拟器或者连接手机,可以看手机助手是否已经连接成功,连接手机可以不用启动eclipse。
6.打开cmd,输入命令adb shell 如果出现如下数据,就说明环境 设备连接都已经正常通过
二 、 abd命令讲解:
abd命令可以分为两类,一种是dos命令,一种是linux的命令。前者 命令 都是通过adb + XXX 的格式执行的,后者 在你输入 adb shell后,电脑远程连接手机或者模拟器上的linux系统,此时相当于在手机或模拟器上面输入 linux命令,直接对手机或模拟器进行操作,所以像ls cd等命令都可以正常使用。
1.dos命令
adb shell - run remote shell interactively
devices [-l] - list all connected devices
('-l' will also list device qualifiers)
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 [-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)
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】命令查看当前路径下的文件内容,如下:
在上图的左侧,是通过远程查看手机的内容,右侧是360手机助手查看的内容,可以看到里面的内容基本是一致的(本来就是同一个路径,肯定相同,呵呵),注意,我们平时写代码时,数据库以及Sp(服务提供商)内容都是写在data/data/的包名下,这个需要root的手机才能查看,否则查看不了
可以再贴张在mac系统上的查看sdcard文件的图:
查看进程的命令 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
打开应用管理,查看正在运行的程序,可以看到有3个360相关进程正在运行,说明一下,com.qihoo.appstore 就是奇虎应用商店的意思,360系列产品是奇虎旗下。
分析下,一共有6个进程PID。其中PPID 136进程包含两个子进程(PID为12020和16099),而PPID 16099又有一个子进程(PID 16116),PPID 12020也有一个子进程(PID 12033),所以中间这四个显示一个进程 ,
那么在手机正在运行中就恰好有3个进程,分别为com.qihoo.appstore(PID为12020、16099、12033、16116)、com.qihoo.appstore:PluginP01 (PID为8384)、com.qihoo.appstore:PluginP08 (PID为32554)
观察这些有什么作用呢?通过查看这些进程,我们可以更好的去了解别人开发的app客户端的应用结构,思考360手机助手为什么要同时启动了4个进程多个服务,也可以用来自己做的客户端的service 是否有启动,比如服务推送。有时候我们去面试,考官也会问是否有linux命令,所以了解这些也是有一定的帮助。
可以看出是写SD卡的权限,这样通过命令行,读进程,看权限,一目了然,尤其是有些开发者如果不通过IDE,而是直接用Editplus写程序,会这些就很重要了
关于/proc/pid/status解释可以查看博客【http://blog.chinaunix.net/uid-24347760-id-2943156.html】
好了,先介绍到这吧,如果想知道怎么查看这些权限深入了解,我们下次再介绍啊
转载请注明出处:http://blog.csdn.net/ljb568838953/article/details/52212427