学习目标:学会使用adb与Linux的常见命令以及logcat的使用方法 adb adb的作用 
可以方便的在电脑端通过命令操控手机 
很多手机自动化指令也是通过adb来实现的 
 
adb的构成 
client端,在电脑上,负责发送adb命令 
daemon守护进程(adbd),在手机上,负责接收和执行adb命令 
server端,在电脑上,负责管理client和daemon之间的通讯 
 
adb工作原理 
client端将命令发送给server端 
serever端会将命令发送给daemon端 
将执行结果返回给server端 
server端将结果再返回给client端 
 
adb常用命令 adb/ adb help/ adb --help		查看adb帮助文档 adb version		显示adb版本和路径 adb devices		显示连接的设备列表 adb install xxx.apk		通过adb安装app adb install -r xxx.apk		覆盖安装 adb uninstall 包名		通过adb卸载app adb push xxx xxx		推送电脑的文件到手机 adb pull xxx		拉取手机的文件到电脑 adb shell		进入到手机的Linux控制台 adb -s 设备名 shell		多设备时,指定设备 adb start-server		启动Server adb kill-server		停止Server adb: failed to install C:\Users\17704\Desktop\HookDemo.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]在尝试安装 APK 文件时失败了,这通常是因为 APK 文件被标记为仅用于测试,系统默认不允许安装这类 APK。 使用adb install -t xxx.apk 
 
logcat AndroidStudio中的logcat package: mine		用当前运行的应用包名进行过滤 level: DEBUG		显示调试级别以上信息 tag: xxxx		过滤xxxx的标签 -tag: xxxx		xxxx的标签除外 message: xxxx		过滤包含xxxx关键字的信息 
 
logcat常用选项 adb logcat -help	常看logcat的帮助文档 adb logcat		常规显示日志 adb logcat -c		清除日志 adb logcat -g		显示缓冲区大小 adb logcat	-G 256M		修改缓冲区大小 
 
Linux cmd命令和Linux命令的区别 
cmd里面输入的命令用来控制Windows电脑 
adb shell进入手机控制台以后,支持使用Linux命令,输入的命令用来操控手机 
这两者命令是不一样的,比如Windows查看目录下的文件及文件夹信息用dir,切换目录用cd;而Linux里用ls和cd 
 
adb shell进入手机控制台以后,显示的信息 
oriole:/$ 
冒号前面的oriole代表设备名 
冒号后面的/代表当前路径 
$代表当前是shell权限,#代表是root权限 
如果手机已经root,可以使用su命令来获取root权限 
 
根目录 / 
可以简单的理解为Windows的盘符,比如C:\ 
/soft可以理解为C:\soft;/soft/Android可以理解为C:\soft\Android 
/ 开始的路径都是绝对路径 
 
pwd  
显示当前目录的绝对路径
cd  
xxx可以是绝对路径,也可以是相对路径
命令或者文件名打不全,可以按tab会补全
cd ~切换到自己的用于目录
~开始的也都是绝对路径
其他特点 
Linux命令实际上是系统中的一个二进制文件 
Linux文件不需要扩展名,有的时候为了区分,才人为的加上扩展名 
Linux文件也是有类型的,可以使用file xxx来查看 
很多命令支持通配符,文件名以.开头即可 
Linux中的隐藏文件,文件名以.开头 
 
Linux命令组成 命令 选项 参数
选项和参数是可选的:命令、命令 选项、命令 参数、命令 选项 参数 
 
一般命令都是小写,选项区分大小写
 
命令 
作用 
 
 
直接使用 
ls 
显示当前目录下的文件及目录信息 
 
加参数 
ls 路径 
显示对应路径下文件及目录信息 
 
加选项 
ls -a 
显示当前目录下所有文件和目录 
 
加多个选项 
ls -a -l 
上面的基础上显示详细信息 
 
多个选项简写 
ls -alh 
上面的基础上,显示统计信息 
 
选项顺序可以颠倒 
ls -lha 
同上 
 
输出 echo hyq echo $PATH 输出环境变量 echo $HOSTNAME 输出主机名 
 
重定向与追加 >		输出重定向 本身应该在终端显示的内容,变成写入文件覆盖 >>		追加 echo Hello World! > text		输出内容保存到文件 
 
输出文件内容  
创建 touch xxx	创建空文件 mkdir aaa	创建aaa目录,如果目录存在会报错 mkdir aaa bbb	同时创建多个目录,如果目录存在会报错 mkdir -p aaa/bbb	递归创建,如果目录存在不报错;不错在则创建 
 
删除 rmdir xxx	删除空目录 rm xxx	删除文件 rm aaa bbb 删除多个文件 rm -r	递归删除整个目录 rm -rf xxx	递归删除,且强制删除不提示控制信息 (在Android里本来就没有提示) 
 
复制 cp a /sdcard/	复制文件到sdcard,保持原名 cp a b /sdcard/		复制多个文件到sdcard,保持原名 cp * /sdcard/	复制当前目录下所有文件到sdcard,保持原名 cp a /sdcard/b	复制文件到sdcard,重命名为b cp -r a b	递归复制整个目录,重命名为b 
 
移动 mv oldName newName			移动文件同时重命名 mv oldName /sdcard/newName	 移动文件同时重命名 mv oldName /sdcard/			移动文件,保持原名 
 
grep grep -ril hyq*	-r代表递归查找,-i代表忽略字母大小写,-l代表只显示文件名 
 
管道命令 相当于命令的组合使用,把上个命令的执行结果,作为数据源,交给下个命令处理
 
查找文件或目录 指定目录,递归查找文件
 
软链接 软链接也称符号链接,类似windows快捷方式,主要存放链接其他文件的路径