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

    xiaoxiao2025-11-10  8

    一 、 测试环境讲解: 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) 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】命令查看当前路径下的文件内容,如下: 在上图的左侧,是通过远程查看手机的内容,右侧是360手机助手查看的内容,可以看到里面的内容基本是一致的(本来就是同一个路径,肯定相同,呵呵),注意,我们平时写代码时,数据库以及Sp(服务提供商)内容都是写在data/data/的包名下,这个需要root的手机才能查看,否则查看不了 可以再贴张在mac系统上的查看sdcard文件的图:

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

    shell@HM2014011:/ $ ps USERPIDPPIDVSIZERSSWCHANPCSTATUSNAMEroot10912456ffffffff00000000S/initmedia1381730283112ffffffff00000000S/system/bin/mediaserverSystem1391458048ffffffff00000000S/system/bin/matvgps1431295080ffffffff00000000S/system/bin/mtk_agpsdshell14511052160c0073b10b6f8c104S/system/bin/batterywarningmedia14614728108ffffffff00000000S/system/bin/MtkCodecServicebluetooth156113996300ffffffff00000000S/system/bin/mtkbtwifi96113900980ffffffff00000000S/system/bin/wpa_supplicantbluetooth113313653931611268ffffffff00000000Scom.mediatek.bluetoothu0_a81828713670467234188ffffffff00000000Scom.qihoo.daemonu0_a81830682875434526952ffffffff00000000Scom.qihoo.daemonu0_a81837113657925220600ffffffff00000000Scom.qihoo.gameassistu0_a81838483715411406944ffffffff00000000Scom.qihoo.appstore:PluginP01u0_a811202013662096843348ffffffff00000000Scom.qihoo.appstoreu0_a8112033120205411407104ffffffff00000000Scom.qihoo.appstoreu0_a811609913657551621144ffffffff00000000Scom.qihoo.appstoreu0_a8116116160995411407112ffffffff00000000Scom.qihoo.appstore:PluginP00u0_a813252813657156420624ffffffff00000000Scom.qihoo360.mobilesafe.cleanu0_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

    转载请注明原文地址: https://ju.6miu.com/read-1304063.html
    最新回复(0)