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

一 、 测试环境讲解:
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,进入到Android Shell命令模式,此时手机或者模拟器要连接成功,否则报错,提示未找到设备。
 adb shell  - run remote shell interactively

这里写图片描述

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

这里写图片描述

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

                                 ('-p' to display the transfer progress)
     adb pull [-p] [-a] <remote> [<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] <package> - 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
USERPIDPPIDVSIZERSSWCHANPCSTATUSNAME
root10912456ffffffff00000000S/init
media1381730283112ffffffff00000000S/system/bin/mediaserver
System1391458048ffffffff00000000S/system/bin/matv
gps1431295080ffffffff00000000S/system/bin/mtk_agpsd
shell14511052160c0073b10b6f8c104S/system/bin/batterywarning
media14614728108ffffffff00000000S/system/bin/MtkCodecService
bluetooth156113996300ffffffff00000000S/system/bin/mtkbt
wifi96113900980ffffffff00000000S/system/bin/wpa_supplicant
bluetooth113313653931611268ffffffff00000000Scom.mediatek.bluetooth
u0_a81828713670467234188ffffffff00000000Scom.qihoo.daemon
u0_a81830682875434526952ffffffff00000000Scom.qihoo.daemon
u0_a81837113657925220600ffffffff00000000Scom.qihoo.gameassist
u0_a81838483715411406944ffffffff00000000Scom.qihoo.appstore:PluginP01
u0_a811202013662096843348ffffffff00000000Scom.qihoo.appstore
u0_a8112033120205411407104ffffffff00000000Scom.qihoo.appstore
u0_a811609913657551621144ffffffff00000000Scom.qihoo.appstore
u0_a8116116160995411407112ffffffff00000000Scom.qihoo.appstore:PluginP00
u0_a813252813657156420624ffffffff00000000Scom.qihoo360.mobilesafe.clean
u0_a8132554325285411406964ffffffff00000000Scom.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为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来查看。
    这里写图片描述
    观察Groups这组数据,1015代表的是什么意思?
    通过查看源码
    http://androidxref.com/4.4.2_r1/xref/system/core/include/private/android_filesystem_config.h】:
    这里写图片描述

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

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

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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值